如何在从子活动中按下后退按钮后检测活动是否成为焦点,以及如何在此时执行某些代码?
答案 0 :(得分:13)
一种可能性是使用startActivityForResult()
启动您的子活动并实施onActivityResult()
,当您从子活动返回时,将调用该活动。
答案 1 :(得分:5)
js的答案是对的,但这里有一些已调试的代码。
将请求代码声明为活动顶部的常量:
public static final int OPEN_NEW_ACTIVITY = 12345;
将它放在开始新活动的地方:
Intent intent = new Intent(this, NewActivity.class);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
活动结束后执行某些操作。文档建议您使用resultCode
,但根据具体情况,按下按钮时,您的结果可以是RESULT_OK
或RESULT_CANCELED
。所以我会把它留下来。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OPEN_NEW_ACTIVITY) {
// Execute your code on back here
// ....
}
}
出于某种原因,我把它放在片段中时遇到了麻烦。所以你必须把它放在Activity中。
答案 2 :(得分:3)
您正在寻找的方法可能是您可以在母班中实现的onResume方法;)。您必须知道在第一次启动任何活动时也会调用onResume。查看活动的生命周期:http://developer.android.com/images/activity_lifecycle.png
此致
答案 3 :(得分:0)
您还可以覆盖onBackPressed()方法和onOptionsItemSelected()方法,并在其中添加一些逻辑。例如,我把它放到我的BaseActivity中,所有其他活动都来自:
@Override
public void onBackPressed() {
// your logic
super.onBackPressed();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
// your logic
}
return super.onOptionsItemSelected(item);
}