我正在尝试将字符串从一个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转到其他活动)。
感谢您的帮助。
答案 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超越了它。它们是一个承诺上下文管理系统。另外,因为可视过程依赖于考虑使用广播接收器,如果需要,可以在整个应用程序和外部广播事件。