[英]How to disable previous activity in Android
對不起,我的英語不好。
我有兩項活動。 稱為Act1和Act2
單擊Act1中的Button(startActivity)時將啟動Act2。 我的問題是如何在Act2中禁用后退按鈕,所以,我無法返回到Act1。
可能嗎。 謝謝。
如何克服這個問題:
覆蓋onKeyDown方法,結束Set finished();
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
finish();
}
return super.onKeyDown(keyCode, event);
}
在startActivity(i)之后; call finish()關閉之前的活動。 或使用Intent.FLAG_ACTIVITY_NO_HISTORY
有幾個答案。 您可以在此處找到一些: 從歷史堆棧中刪除活動
您還可以覆蓋后退按鈕以完全按照您的意願執行操作。
基本上你需要這個,
Intent.FLAG_ACTIVITY_CLEAR_TASK
這會清除您當前的活動堆棧,即
如果您有活動A並且它使用此標志啟動活動B,則按后退按鈕將不會返回活動B,因為您的堆棧現在只有B.
與覆蓋后退按鈕相比,此方法更簡潔,所需代碼更少。
因為聽起來你想要這樣做,所以后退按鈕不會回到活動1,但你可能仍需要在Acitity 2中使用功能后退按鈕(可能需要處理潛在的Activity 3或處理片段Backstack)最簡單的方法是按原樣保留后退按鈕功能,只需從后台堆棧中擦除活動1即可。 通過在切換到活動2時調用活動1上的finish()
來執行此操作:
// This is in Activity 1. It is how we switch to Activity 2:
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
finish();
// And now Activity 1 cannot be navigated back to with the back button
// but the back button functionality remains intact.
如果你把它留在下面,我認為它不會崩潰
@Override
public boolean onKeyDown(int keyCode,KeyEvent event){if((keyCode == KeyEvent.KEYCODE_BACK)){
}
return super.onKeyDown(keyCode, event);
}
在活動中使用此代碼2 ...
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode){
case KeyEvent.KEYCODE_BACK:
break;
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.