检查android中是否按了后退键?

时间:2012-06-25 01:58:12

标签: java android back-button

说我正在进行我的主要活动并开始一项新活动

MainActivity > NewActivity

NewActivity我按后退键

MainActivity < NewActivity

我希望MainActivityNewActivity关闭后显示,但在MainActivity正常运行时(例如首次运行应用程序时)不显示。有谁知道这是否可行?

5 个答案:

答案 0 :(得分:20)

@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
    }
}

答案 1 :(得分:11)

我尝试使用以下方法通过第一种方法检测活动中操作栏上按下的后退按钮,第二种方法用于检测移动硬件按钮或杀死活动按钮。

@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();
}

答案 2 :(得分:8)

一些想法:

  • 您可以在MainActivity点击NewActivity时设置一个标记。
  • 您可以从startActivityForResult致电MainActivity并安排NewActivity设置一个结果,当MainActivity.onActivityResult()完成时,您将在NewActivity收到该结果。

答案 3 :(得分:7)

您可以在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。

答案 4 :(得分:0)

当您开始NewActivity时,您需要使用startActivityForResult并使用有效的requestId。一旦requestId完成,此类onActivityResult将会传回给NewActivity