java - 按下向上按钮时如何将数据发送到父 Activity

标签 java android

按下后退按钮时,我能够将数据发送到父 Activity 。 但是,对于向上按钮我无法实现类似的逻辑并且数据没有返回到父 Activity ,这是为什么?

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            // Respond to the action bar's Up/Home button
            case android.R.id.home:
                NavUtils.navigateUpFromSameTask(this);
               ..... 
            Intent resultIntent = new Intent();
            resultIntent.putExtra("noteJSON", noteJSON.toString());
            setResult(Activity.RESULT_OK, resultIntent);
            this.finish();

                return true;
        }
        return super.onOptionsItemSelected(item);
    }

我正在使用 startActivityForResult 启动子 Activity 。在 onactivityresult 上基本上处理了 Intent 信息。当返回时,按钮被按下它的工作。当按下 UP 时,onactivityresult 永远不会被执行。这就是问题所在

最佳答案

当您调用navigateUpFromSameTask 方法时,它会结束当前 Activity 并启动(或恢复)适当的父 Activity 。如果目标父 Activity 在任务的返回堆栈中,则将其提前。因此 onActivityResult 不会被调用。

如果您想要确保通过 onActivityResult 返回结果,请移除对 navigateUpFromSameTask 的调用,如下所示:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:

        ....
        Intent resultIntent = new Intent();
        resultIntent.putExtra("noteJSON", noteJSON.toString());
        setResult(Activity.RESULT_OK, resultIntent);
        this.finish();

        return true;
    }
    return super.onOptionsItemSelected(item);
}

关于java - 按下向上按钮时如何将数据发送到父 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50894163/

相关文章:

java - Java中如何接收多个 vector ?

java - 从 Visual Source 安全 check out 的 Ant 目标

android - 如何覆盖 Android 应用程序中音量按钮的行为?

安卓多微调器

java - 获取 Eclipse RCP 中的 Activity 插件列表

java - Spring属性占位符配置需要在运行时动态替换

android - 在内部存储上播放文件时 MediaPlayer 错误 -2147483648

android - 应用程序被杀死但 onTrimMemory 没有被调用

android - 为什么我的 map View 上的叠加层未显示?

java - 无法从 Java 进程(Runtime.getRuntime().exec() 或 ProcessBuilder)读取 InputStream