这是我的问题:
创建MainActivity。添加一个按钮,它将启动另一个活动SecondActivity。
Intent i = new Intent(getActivity(),SecondActivity.class);
startActivityForResult(i,0);
在SecondActivity中,我捕获后退按钮单击事件,并添加一个按钮以返回到第一个Activity。
单击操作栏中的后退按钮时:
@覆盖
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// back button
Intent resultIntent = new Intent();
// TODO Add extras or a data URI to this intent as appropriate.
setResult(Activity.RESULT_OK, resultIntent);
//finish();
return false;
}
return super.onOptionsItemSelected(item);
}
单击活动内的按钮时:
Button btn = (Button)this.findViewById(R.id.button2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent resultIntent = new Intent();
// TODO Add extras or a data URI to this intent as appropriate.
setResult(Activity.RESULT_OK, resultIntent);
finish();
}
});
当我单击SecondActivity中的按钮时,将调用MainActivity中的onActivityResult,但如果单击SecondActivity的Actionbar中的后退按钮,则从未调用它。谁能告诉我为什么?感谢
答案 0 :(得分:4)
以下是正在运行的代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// back button
Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
我想finish()将关闭当前的Activity,并返回true表示已处理动作。 (默认的后退动作似乎与finish()不同。)
答案 1 :(得分:1)
试试这个: -
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent resultIntent = new Intent();
setResult(Activity.RESULT_OK, resultIntent);
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
答案 2 :(得分:1)
好的答案是Gopal Rao code in the same question。它对我有用。这是他的解决方案的副本:
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
Intent result = new Intent((String) null);
result.putExtra("SOME_CONSTANT_NAME", true);
setResult(RESULT_OK, result);
finish();
return true;
}
else {
return super.onOptionsItemSelected(item);
}
}