在一个 onActivityResult() 中处理来自多个活动的数据?
Posted
技术标签:
【中文标题】在一个 onActivityResult() 中处理来自多个活动的数据?【英文标题】:Handle data from several activities in one onActivityResult()? 【发布时间】:2013-02-06 17:55:12 【问题描述】:我想知道是否可以处理来自例如的数据。活动 2 和活动 1 中的活动 3 有一个 onActivityResult()
,或者我是否需要为每个返回数据的活动提供一个方法?
Activity 1 是应用程序的主要 Activity。
活动一:
// Handle return value from activity
protected void onActivityResult(int requestCode, int resultCode, Intent data)
if (resultCode == Activity.RESULT_OK)
String imageId = data.getExtras().getString("imageId");
// Do something if data return from activity 2 ??
// Do something if data return from activity 3 ??
活动 2
Intent intent = new Intent();
intent.putExtra("imageId", imagePath);
setResult(RESULT_OK, intent);
finish();
活动 3
Intent intent = new Intent();
intent.putExtra("contactId", data);
setResult(RESULT_OK, intent);
finish();
【问题讨论】:
这就是 requestCode 的用途。 【参考方案1】:在您的 startActivityForResult
中为活动 1 设置 requestCode:调用活动 2
Intent intent = new Intent(this, Activity2.class);
startActivityForResult(intent,10);
调用活动 3
Intent intent = new Intent(this, Activity3.class);
startActivityForResult(intent,11);
现在当您来到onActivityResult
时,请检查requestCode
喜欢:
public void onActivityResult(int requestCode, int resultCode, Intent data)
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode)
case (10):
// do this if request code is 10.
break;
case (11):
// do this if request code is 11.
break;
【讨论】:
是 super.onActivityResult(requestCode, resultCode, data);有必要吗? 派生类必须调用该方法的超类实现。如果不这样做,将引发异常。 一般来说(不是专门在 android 的东西中),当你派生时,你应该调用超类的方法,除非你知道你不应该这样做。这是一个需要根据具体情况做出的决定,但默认情况下(我会说)是您这样做。【参考方案2】:No confusion check result code and request code
..
例子:
private static final int TWO = 2;
private static final int THREE = 3;
startActivityForResult(new Intent(this,Activity2.class),TWO); // one for Activity 2
startActivityForResult(new Intent(this,Activity3.class),THREE);
和
protected void onActivityResult(int requestCode, int resultCode, Intent data)
if (resultCode == Activity.RESULT_OK )
if(requestCode == TWO)
// Activity two stuff
else if(requestCode == THREE)
// Activity three stuff
【讨论】:
以上是关于在一个 onActivityResult() 中处理来自多个活动的数据?的主要内容,如果未能解决你的问题,请参考以下文章
在一个 onActivityResult() 中处理来自多个活动的数据?
onActivityResult() 没有在 DialogFragment 中执行