当尝试将数据从一个活动传递到另一个活动时,它可以在一个方向上运行父>> 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();
}
我得到的输出是数据为空。
我得到的错误是:活动正在作为新任务启动,因此取消活动结果。
答案 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活动中声明变量并在子活动上使用该变量来存储值?