如何在Android上的活动之间传递值?

这是我的应用程序的导航:

Activity1调用Activity2Activity2.finish() ,调用Activity3Activity3.finish()

Activity3完成时,它调用Activity1onResume方法。 现在我怎样才能将Activity3的值传递给Activity1

Solutions Collecting From Web of "如何在Android上的活动之间传递值?"

Umesh显示了一个很好的技术,但我认为你需要相反的方向。

步骤1

当启动Activity 2和3时,使用startActivityForResult 。 这允许您在调用活动中处理结果。

 startActivityForResult(MY_REQUEST_ID); 

第2步

在活动2和3中,调用setResult(int, Intent)返回一个值:

 Intent resultData = new Intent(); resultData.putExtra("valueName", "valueData"); setResult(Activity.RESULT_OK, resultData); finish(); 

第3步

在你的调用活动中,实现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发送一个Intent需要一些触发器,比如一个button或者onStop生命周期方法来发送它。 最好是使用setResult方法自动发送结果。

还有其他技术,您可以调用startActivity(new Intent(getApplicationContext(),Activity1.class))方法以及Bundle类将数据从activity3传输到activity1。

在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的子类来说是很麻烦的。