未调用onActivityResult方法

时间:2013-12-03 15:08:29

标签: android onactivityresult

我在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);
        }
    }
    

  • 子活动已覆盖'finish'方法。此方法设置结果。

    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'方法没有被调用。

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

    我做错了什么?

    由于

  • 1 个答案:

    答案 0 :(得分: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);
        }
    }
    

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

    相关问题