首页 > 解决方案 > 按下向上按钮时如何将数据发送到父活动

问题描述

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

 @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用来开始儿童活动。关于onactivityresult基本处理意图信息。返回时,按钮被按下它的工作。按下 UP 时onactivityresult永远不会执行。那就是问题所在

标签: javaandroid

解决方案


当您调用navigateUpFromSameTask方法时,它会完成当前活动并启动(或恢复)适当的父活动。如果目标父活动在任务的后栈中,则将其提前。结果onActivityResult不会被调用。

如果要确保通过onActivityResultthen remove 调用返回结果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);
}

推荐阅读