說我對我的主要活動,我開始一個新的活動檢查後退鍵是否在android中被按下?
MainActivity > NewActivity
而且從NewActivity
我按下返回鍵
MainActivity < NewActivity
我想MainActivity
做一些事情,如果它NewActivity
後顯示已關閉,但MainActivity
正常運行時(例如第一次運行應用程序時)不會。有誰知道這是否可能?
說我對我的主要活動,我開始一個新的活動檢查後退鍵是否在android中被按下?
MainActivity > NewActivity
而且從NewActivity
我按下返回鍵
MainActivity < NewActivity
我想MainActivity
做一些事情,如果它NewActivity
後顯示已關閉,但MainActivity
正常運行時(例如第一次運行應用程序時)不會。有誰知道這是否可能?
一對夫婦的想法:
MainActivity
火災時了NewActivity
。MainActivity
調用startActivityForResult
並安排NewActivity
設定一個結果,您將收到MainActivity.onActivityResult()
時NewActivity
結束。當您開始NewActivity
時,您需要使用startActivityForResult
並使用有效的requestId
。一旦NewActivity
完成,此requestId
將傳回給onActivityResult
。
@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
}
}
如果後退按鈕被按下,是不是隻聽? –
如果您只想收聽後退按鈕,請使用第一個剪下的代碼。 –
您可以重載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);
}
在MainActivity的onCreate()方法:
Bundle extras = getIntent().getExtras();
boolean fromNewActivity =Boolean.parseBoolean(extras.getString("fromNewActivity"));
現在你可以,如果在MainActivity打開NewActivity後或不檢查。
我試着用下面的方法來檢測按下第一種方法在活動欄中的活動條上的後退按鈕,第二種方法用來檢測移動硬件按鈕後退或關閉活動按鈕。
@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();
}
謝謝!我用startActivityForResult,效果很棒! –