7

我的 android 应用程序有问题。我不知道为什么按下操作栏中的“向上导航”按钮时没有调用“onActivityResult”方法。我想我已经正确地完成了所有事情:

  • 父活动使用“startActivityForResult”方法启动子活动。

    Intent intent = new Intent(ParentActivity.this, ChildActivity.class);
    startActivityForResult(intent, 1000);
    

  • 父活动已覆盖“onActivityResult”方法。

    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
       super.onActivityResult(requestCode, resultCode, data);   
       if (data != null && requestCode == 1000)
       {
            Bundle extras = data.getExtras();
            Boolean rc = extras.getBoolean(MyConstants.INTENT_EXTRA_RESULT);
            if (rc)
            {
                .......
            }
        }
    }
    

  • 子活动已覆盖“onOptionsItemSelected”并调用“NavUtils.navigateUpFromSameTask”。

    public boolean onOptionsItemSelected(MenuItem item)
      {
        if (item.getItemId() == android.R.id.home)
        {
            Intent result = new Intent((String)null);
            result.putExtra(MyConstants.INTENT_EXTRA_RESULT, true);
            setResult(RESULT_OK, result);
            NavUtils.navigateUpFromSameTask(this);          
            return true;
        }           
        else
        {
            return super.onOptionsItemSelected(item);
        }
    }
    

  • 子活动已覆盖“完成”方法。这个方法设置了一个结果。

    public void finish() 
    {
       Intent result = new Intent((String)null);
       result.putExtra(Constantes.INTENT_EXTRA_HAY_QUE_RECALCULAR, hayQueRecalcular);               
       setResult(RESULT_OK, result);
    
       super.finish();
    }   
    

    我不确定为什么没有调用“onActivityResult”方法。

    我观察到的是,当按下操作栏中的“向上导航”按钮时,子活动没有完成(没有调用“完成”方法)。但是,当按下后退按钮(硬件按钮)时会调用它。

    我做错了什么?

    谢谢

  • 4

    1 回答 1

    5

    由于您的子活动只是在您的父活动的顶部,因此不需要此方法

     NavUtils.navigateUpFromSameTask(this);    
    

    写得像

    public boolean onOptionsItemSelected(MenuItem item) {
        if (item.getItemId() == android.R.id.home) {
            Intent result = new Intent((String) null);
            result.putExtra(MyConstants.INTENT_EXTRA_RESULT, true);
            setResult(RESULT_OK, result);
            finish();
            return true;
        } else {
            return super.onOptionsItemSelected(item);
        }
    }
    

    按下主页按钮时完成您的孩子活动。

    于 2013-12-03T15:35:33.693 回答