0

当试图将数据从一个活动传递到另一个活动时,它在一个方向上正常工作父>>子。但是返回路径child >> parent返回NULL intent对象。我从明天开始尝试,并且经历了很多答案,但无法实现。请帮助我。子活动返回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(); 

} 

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

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

+0

检查应答 – 2014-09-04 07:30:30

+1

而不是'意图resultIntent = getIntent();'你为什么不使用'意向resultIntent =新意图();' – helleye 2014-09-04 07:30:49

+0

我试图用新的Intent(),但没有结果为此。 – yogesh 2014-09-04 07:35:02

回答

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 
+0

不工作。数据为空。 – yogesh 2014-09-04 07:34:28

+0

什么是SUCCESS_CALLBACK – 2014-09-04 07:39:28

+0

SUCCESS_CALLBACK的值是1. – yogesh 2014-09-04 07:42:27

-1

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

+0

我正在处理两个不同的应用程序。它在这种情况下工作吗? – yogesh 2014-09-04 07:41:11

+0

是的,它应该工作! – yhel 2014-09-04 07:43:58

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"); 
    } 
}