android - 向上导航时如何从 Android Activity 返回结果?

标签 android android-activity android-navigation

假设我有两个 Activity - MainActivityNameActivityMainActivity 打开 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/

相关文章:

启用 proguard 时 Android 构建失败

Android Back/Up 按钮并保留之前的 Intent

Android 导航组件 fragment 转换具有白色背景

Android AudioTrack 在声音开始和结束时点击

android - 创建包含 javadoc 和源的 Android 库 AAR

Android 内存不足,原因不明

android - 从后台调用什么方法

java - Android fragment 导航无需点击按钮

android - 如何在 Kotlin Android 中处理特殊字符

android - 在 Android 中,通过多个 Activity 维护 session 的最佳做法是什么?