子活动返回NULL意图对象

时间:2014-09-04 07:18:25

标签: java android android-intent android-activity ibm-mobilefirst

当尝试将数据从一个活动传递到另一个活动时,它可以在一个方向上运行父>> child。但返回路径子>>父返回NULL意图对象。我从明天开始尝试并经历了许多答案,但无法使其发挥作用。请帮帮我。

主要活动配置文件:

<activity android:name="com.abc.OpenExternalApplication" android:label="@string/title_activity_view_document"></activity> 

以下是我在家庭活动中启动活动的地方:

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        String appURI = getIntent().getStringExtra("appURI");

        Intent intent = getPackageManager().getLaunchIntentForPackage(appURI);

        startActivityForResult(intent, SUCCESS_CALLBACK );

}

以下是将控制权传递回主要活动的子活动:

 public void onClick(View v) {

    if(v.equals(searchPolBtn)) {

        String polNo = polNoEditText.getText().toString();

        Toast.makeText(getApplicationContext(), polNo, Toast.LENGTH_SHORT).show();

        Intent resultIntent = getIntent();
        // TODO Add extras or a data URI to this intent as appropriate.

        setResult(Activity.RESULT_OK, resultIntent);

        resultIntent.putExtra("data", polNo);

        this.finish();
    }
}

以下是等待结果的父活动:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(data!=null)
            LOGGER.warning(data.getStringExtra("data"));
        else
            LOGGER.warning("Data Is Null");

        this.finish();

}

我得到的输出是数据为空。

我得到的错误是:活动正在作为新任务启动,因此取消活动结果。

3 个答案:

答案 0 :(得分:0)

  public void onClick(View v) 
   {

    if(v.equals(searchPolBtn)) {

    String polNo = polNoEditText.getText().toString();

    Toast.makeText(getApplicationContext(), polNo, Toast.LENGTH_SHORT).show();

    Intent resultIntent = getIntent();
    // TODO Add extras or a data URI to this intent as appropriate.

     resultIntent.putExtra("data", polNo);

    setResult(1, resultIntent);



    this.finish();
   }
 }




protected void onActivityResult(int requestCode, int resultCode, Intent data) 
  {
   if (requestCode == SUCCESS_CALLBACK && resultCode == RESULT_OK && data!=null) 
     {

  }
 }//onActivityResult

答案 1 :(得分:0)

首先有一个原因没有使用:

Intent resultIntent = new Intent();

然后先将结果放入setResult(按此顺序)

resultIntent.putExtra("data", polNo);
setResult(Activity.RESULT_OK, resultIntent);

如果它没有改变任何东西,请尝试以后:

getTargetFragment().onActivityResult(getTargetRequestCode(), Activity.RESULT_OK, resultIntent);

然后你应该在onActivityResult中检查你的requestCode:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(requestCode == SUCCESS_CALLBACK){
        if(data!=null)
            LOGGER.warning(data.getStringExtra("data"));
        else
            LOGGER.warning("Data Is Null");
    }
}

答案 2 :(得分:-1)

为什么不在Parent活动中声明变量并在子活动上使用该变量来存储值?