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

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

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

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

  • 将特定活动作为堆栈中的根活动
  • 每项活动都必须有布局吗?
  • 在开始新活动后调用finish()
  • 完成广播接收器的活动
  • android中manifest文件中main,default和launcher的用途是什么?
  • 意图putExtra方法的最大长度? (强制closures)
  • Android活动命名
  • OnPause()或onStop()是否即使电话由于电量不足而死机?
  • 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的子类来说是很麻烦的。