[英]Check if back key was pressed in android?
假設我正在進行主要活動並開始一項新活動
MainActivity > NewActivity
從NewActivity
我按后退鍵
MainActivity < NewActivity
我希望MainActivity
在NewActivity
關閉后顯示它,但是當MainActivity
正常運行時(例如首次運行應用程序時)。 有誰知道這是否可能?
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
Log.d(this.getClass().getName(), "back button pressed");
}
return super.onKeyDown(keyCode, event);
}
@Update。 如果您希望在NewActivity完成時收到通知,則必須通過startActivityForResult(Intent,requestCode)啟動它。 然后,您必須覆蓋MainActivity上的onActivityResult()。 檢查requestcode參數,如果返回代碼等於提交代碼(當你啟動childActivity時),請添加一些代碼來開展業務。
int MYCODE=1000;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Result OK.d.
if (requestCode == MYCODE) {
// do something good
}
}
我嘗試使用以下方法檢測第一種方法在活動中按下操作欄上的后退按鈕,第二種方法用於檢測移動硬件按鈕后退或終止活動按鈕。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
onBackPressed();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
setResult(RESULT_CANCELED);
super.onBackPressed();
}
一些想法:
NewActivity
時在MainActivity
設置一個標志。 MainActivity
調用startActivityForResult
並安排NewActivity
設置結果,當NewActivity
完成時,您將在MainActivity.onActivityResult()
收到該結果。 您可以在NewActivity中覆蓋onBackPressed()方法,該方法將檢測何時按下后退按鈕。 然后,為了通知MainActivity,您可以在一個包中發送一個布爾標志,以便MainActivity在NewActivity之后檢測到它的打開。
在NewActivity中:
@Override
public void onBackPressed() {
boolean fromNewActivity=true;
Intent mainIntent = new Intent(view.getContext(), MainActivity.class);
Bundle bundleObj = new Bundle();
bundleObj.putString("fromNewActivity", Boolean.toString(fromNewActivity));
mainIntent.putExtras(bundleObj);
startActivityForResult(mainIntent, 0);
}
在onCreate()方法的MainActivity中:
Bundle extras = getIntent().getExtras();
boolean fromNewActivity =Boolean.parseBoolean( extras.getString("fromNewActivity"));
現在,您可以檢查是否在NewActivity之后打開MainActivity。
當您啟動NewActivity
您需要使用startActivityForResult
並使用有效的requestId
。 一旦NewActivity
完成,這樣的requestId
將傳遞給onActivityResult
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.