假设我正在进行主要活动并开始一项新活动
MainActivity > NewActivity
然后从NewActivity
我按后退键
MainActivity < NewActivity
MainActivity
如果它在NewActivity
关闭后显示,我想做一些事情,但不是在MainActivity
正常运行时显示,例如在第一次运行应用程序时。有谁知道这是否可能?
假设我正在进行主要活动并开始一项新活动
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);
}
@更新。如果你想在 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
}
}
I try the below method to detect the back button pressed on the action bar in activity by the first method and the second one is used to detecting the mobile hardware button back or kill activity button.
@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 中的 onBackPressed() 方法,该方法将检测何时按下后退按钮。然后为了通知 MainActivity,您可以在包中发送一个布尔标志,以便 MainActivity 在 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"));
现在您可以检查 MainActivity 是否在 NewActivity 之后打开。
几个想法:
MainActivity
它启动时设置一个标志NewActivity
。startActivityForResult
并MainActivity
安排NewActivity
设置结果,完成后您将收到该MainActivity.onActivityResult()
结果NewActivity
。开始时,NewActivity
您需要使用startActivityForResult
并使用有效的requestId
. 一旦完成,这些requestId
将传回给您。onActivityResult
NewActivity