假设我有两个 Activity - MainActivity
和 NameActivity
。 MainActivity
打开 NameActivity
,以便通过调用 startActivityForResult(...)
从用户获取一些输入。
在NameActivity
中,我重写了finish
方法,以便按back将返回名称作为结果:
@Override
public void finish() {
String name = nameEditText.getText().toString();
Intent intent = new Intent();
intent.putExtra(RESULT_NAME, name);
this.setResult(RESULT_OK, intent);
super.finish();
}
在MainActivity中,我按如下方式处理结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case REQUEST_CODE_GET_NAME:
if (resultCode == RESULT_OK) {
String name = data.getStringExtra(SelectionActivity.RESULT_NAME);
Toast.makeText(this, "Hi " + name + "!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Cancelled", Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
有没有办法让 NameActivity
在使用操作栏中的向上按钮时执行相同的操作?
注意:我的应用程序面向 Android 4.0 (ICS) 及更高版本,因此向上导航是“自动”发生的 - 也就是说,我没有编写任何代码,只是在 list 中指定了父 Activity ,如下所示:
<activity
android:name="com.example.subactivitytest.NameActivity"
android:label="@string/title_activity_name"
android:parentActivityName="com.example.subactivitytest.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.subactivitytest.MainActivity" />
</activity>
谢谢!
最佳答案
您始终可以在 onOptionsItemSelected()
方法中调用 finish 方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
此外,请确保您已启用主页按钮:getActionBar().setHomeButtonEnabled(true);
关于android - 向上导航时如何从 Android Activity 返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21261876/