发送字符串数据而不更改活动(意图)

时间:2017-04-24 21:00:42

标签: java android

我正在尝试将字符串从一个Activity发送到另一个Activity而不更改CURRENT ACTIVITY。这是我用过的代码:

Intent intent = new Intent(this, AnotherActivity.class);
            intent.putExtra("getFollowerNumberData", txt);
            startActivity(intent);

使用此代码将我带到其他活动或我不希望这样。我只是想发送这个字符串而不改变活动。我试过这个

Intent intent = new Intent();

但它正在崩溃我的应用程序。首先有可能这样做吗?如果是,我该如何实现?

编辑:更清楚一点,它就像其他应用或游戏中的关注者和关注功能。当您关注某人时,您所关注的人的数量也会跟随您的跟随号码。由于我的SignInPlayerProfile.Class(其中下面的内容也应该是一个)在另一个活动中,我试图从主活动中获取此信息intent.putExtra("getFollowerNumberData, txt);并使用text.setText()在SignInPlayerPlayer中显示该信息。但问题是使用intent = new Intent(this, AnotherActivity.class);它带我到SignInPlayerProfile活动,我不喜欢

  

我正在尝试将字符串从一个Activity发送到另一个Activity而不更改CURRENT ACTIVITY(或更简单的单词WIHTOUT转到其他活动)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

当活动关闭时,根据它的生命周期,它将被销毁并且不再存在,当您启动活动时,它将被创建然后它可以获取您的数据,因此您无法将数据发送到被破坏的活动不再存在

您可以使用静态变量在活动(类)之间进行通信,您可以从另一个活动更改活动的静态变量的值,但是对于您需要活动的数据而言,这不是一个好的选项,因为静态变量依赖于如果Android OS需要更多内存

,将释放堆内存和堆

另一种方法是在第一个活动中创建一个消息处理程序作为静态变量,然后从第二个活动向Handler发送一个消息,请参阅此示例:

http://stacktips.com/tutorials/android/android-handler-example

我建议你使用SharedPreferences在第一项活动中保存数据,然后在第二项活动中加载

编辑

根据您的编辑,当第二个活动可见时,您只想在另一个Activity中使用“Number”作为“Follow”或“Followers”,您应该使用sharedpreferences来保存“Number”并从中加载它在你需要的时候。例如,在text.settext()方法之前,您可以从共享偏好中加载数字,然后将其传递给text.settext()

您不应该将数据保存在变量或类上,并且应该将它们保存在像Database或SharedPreferences这样的文件上,然后您可以在每次需要时加载它们

此外,您可以搜索活动生命周期,并了解如何使用OnStart等生命周期事件来加载数据

答案 1 :(得分:0)

首先请考虑startActivityForResult(),我们可以将信息从一个活动发送到另一个活动,反之亦然。如上所述,考虑将shared_preferences用于本地内存存储。要以优雅的方式真正完成这一壮举,请考虑使用obervables(rxandroid)。您可以在一个活动或片段中发布观察结果,

然后订阅另一个活动或片段。我没有提到事件总线也没有提到otto,因为rxjava / rxandroid超越了它。它们是一个承诺上下文管理系统。另外,因为可视过程依赖于考虑使用广播接收器,如果需要,可以在整个应用程序和外部广播事件。