假设我正在我的主活动中并启动了一个新活动
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()方法。这里检查请求代码参数,如果返回的代码等于提交代码(当你启动子活动时),则放置一些代码来执行你的业务逻辑。
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中重写onBackPressed()方法,这将检测到返回按钮被按下时的情况。然后,为了通知MainActivity,您可以在Bundle中发送一个布尔标志,以便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 之后打开。
有一些想法:
NewActivity
时,您可以在MainActivity
中设置一个标志。MainActivity
调用startActivityForResult
,并安排NewActivity
设置结果,在NewActivity
完成时,您将在MainActivity.onActivityResult()
中接收到该结果。当您启动NewActivity
时,需要使用startActivityForResult
并使用有效的requestId
。这样的requestId
将在NewActivity
完成后通过onActivityResult
传递回给您。