簡體   English   中英

檢查android中是否按了后退鍵?

[英]Check if back key was pressed in android?

假設我正在進行主要活動並開始一項新活動

MainActivity > NewActivity

NewActivity我按后退鍵

MainActivity < NewActivity

我希望MainActivityNewActivity關閉后顯示它,但是當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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM