如何解决如何在Android上的“活动”之间传递值?
| 这是我的应用程序的导航:Activity1
呼叫Activity2
→Activity2.finish()
,呼叫Activity3
→Activity3.finish()
当Activity3
完成时,它将调用Activity1
的onResume
方法。现在如何将值从Activity3
传递到Activity1
?
解决方法
Umesh显示了一种很好的技术,但是我认为您想要相反的方向。
步骤1
启动活动2和3时,请使用ѭ10。这使您可以在调用活动中处理结果。
startActivityForResult(MY_REQUEST_ID);
第2步
在活动2和3中,调用setResult(int,Intent)
返回一个值:
Intent resultData = new Intent();
resultData.putExtra(\"valueName\",\"valueData\");
setResult(Activity.RESULT_OK,resultData);
finish();
第三步
在您的通话活动中,实施onActivityResult
并获取数据:
protected void onActivityResult(int requestCode,int resultCode,Intent data) {
if (requestCode == MY_REQUEST_ID) {
if (resultCode == RESULT_OK) {
String myValue = data.getStringExtra(\"valueName\");
// use \'myValue\' return value here
}
}
}
编辑:
技术2
是的,您还可以通过向扩展了Application
的应用程序中添加一个类来使用全局应用程序状态,请参见此StackOverflow答案
,将会话ID用于您要启动活动的意图中的注销活动:
Intent intent = new Intent(getBaseContext(),SignoutActivity.class);
intent.putExtra(\"EXTRA_SESSION_ID\",sessionId);
startActivity(intent)
请参阅本教程。
,为什么还要费心遵循这种结构...如果三个返回一个?只需将数据意图从三个发送到一个,然后进行相应处理即可。
,从活动3到1发送一个Intent将需要一些触发,例如按钮或可能是onStop生命周期方法来发送它。最好使用setResult方法自动发送结果。
,另外还有另一种技术,您可以与Bundle类一起调用dle18ѭ方法,以将数据从活动3传输到活动1。
,在Android上,可以启动另一个具有指定程序包名称的应用程序,并为其传递参数。
public static void launchApp(Context context,String packageName) {
Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);
if(intent == null) {
intent = new Intent(Intent.ACTION_VIEW,Uri.parse(\"market://details?id=\" + packageName));
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra(Intent.EXTRA_TEXT,\"*argument to send*\");
context.startActivity(intent);
}
以下代码可用于在目标应用中检索参数。
public static String getArgument(Activity activity) {
return activity.getIntent().getStringExtra(Intent.EXTRA_TEXT);
}
只需要对Activity的引用,这在Unity中很有用,因为在该类中很难将Activity子类化。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。