按下向上按钮时如何将数据发送到父活动

时间:2018-06-17 06:08:46

标签: java android

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

 @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永远不会被执行。那就是问题

2 个答案:

答案 0 :(得分:1)

当您调用navigateUpFromSameTask方法时,它会完成当前活动并启动(或恢复)相应的父活动。如果目标父活动位于任务的后台堆栈中,则会将其提前。因此,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);
}

答案 1 :(得分:0)

尝试以下

  case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
           ..... 
            startActivity(new Intent(YourActivity.this,ParentActivity.class).putExtra("noteJSON", noteJSON.toString()));


            return true;