【问题标题】:How to send data to parent activity when up button is pressed按下向上按钮时如何将数据发送到父活动
【发布时间】:2018-06-17 14:38:29
【问题描述】:

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

 @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 来启动 childactivity。在onactivityresult 上基本上处理意图信息。返回时,按钮被按下它的工作。当按下 UP 时,onactivityresult 永远不会被执行。这就是问题

【问题讨论】:

  • 请说明你在做什么来获取父活动中的数据。
  • 你能显示父活动的代码,你在哪里开始子活动和你的onactivityresult
  • 我正在使用 startActivityForResult 来启动孩子。在 onactivityresult 上基本上处理信息。返回时,按钮被按下它的工作。当按下 onactivityresult 时永远不会被执行。这就是问题

标签: java android


【解决方案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);
}

【讨论】:

  • 它仍然无法正常工作。 onActivityResult 没有被调用。 iv 验证了 onOptionsItemSelected 中的代码正在执行,但不是 onActivityResult
  • 那么为什么要删除 NavUtils.navigateUpFromSameTask(this);让它工作
  • @32a 我已经在答案中提供了解释。如果不清楚,请告诉我
【解决方案2】:

下面试试

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


            return true;

【讨论】:

  • 不工作意味着只有数据不通过或意图不工作
  • 当我按下向上按钮时,它会返回父级,但数据不会更新。但是对于后面,它可以正常工作
  • onActivityResult 没有被调用。这就是为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 2014-06-26
  • 2011-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-05
相关资源
最近更新 更多