0

这是我的问题:

活动 A 有 en EditText。我需要从这个 EditText 中保存用户的输入,以便在 Activity D 中将其拉出,在 Activity 层次结构中的 3 个活动中将其放入我在那里设置的 TextView 中。我尝试了几种方法,但都没有奏效。我遇到的示例实现了某些方法,例如 Intent 中的 Bundle,将数据推送到层次结构中的下一个 Activity。我相信这些方法对我不起作用,因为我不得不将数据推送到层次结构更靠下的 Activity。有什么建议么?

4

4 回答 4

0

我建议数据库是一个不错的主意。但是,如果它太过分了,您可能会考虑在自定义 Application 对象中使用静态变量(甚至可能是列表或地图)。将 android:name=".MyApplication" 属性添加到清单中的应用程序元素,然后创建一个新类 MyApplication,它扩展了 Application。一旦你这样做了,活动 A 可以调用:

((MyApplication) getApplication()).setUserText(editText.getText().toString())

...和活动 D 可以调用:

editText.setText(((MyApplication) getApplication()).getUserText()).

您必须弄清楚消息传递协议的语义:如果 D 在 A 之前启动会发生什么,依此类推,但这会将字符串从一个地方传递到另一个地方。

于 2013-02-05T00:19:56.453 回答
0

如果只是稍后要拉到 TextView 的文本(EditText)。我会考虑设置一个 SQLite 数据库类以将文本保存在数据库中,然后将文本拉到任何 Activity 中的 TextView 中。这是一个很好的设置链接:SQLite for Android

于 2013-02-03T00:21:42.973 回答
0

如果你想走 Bundle 路线,你可以不断地通过你的活动层次结构传递同一个 Bundle,或者将数据从一个 Bundle 存储到下一个。您还可以使用 SharedPreferences。这取决于如果应用程序被杀死,数据是否需要持久化。

于 2013-02-03T05:02:44.257 回答
0

最简单的事情是使用 SharedPreferences,它可以从应用程序的每个活动或服务中访问。

您正在尝试传输简单的数据,因此放入键值对将非常简单。

要将数据保存到 Sharedprefs 中,只需输入保存用户数据的 Activity

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();

editor.putString("key", "value");
editor.commit();

在要检索数据的活动中,使用以下命令:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String userValue =  prefs.getString("key", "ValueIfKeyDoesNotExist");

当然还有更多关于 SharedPreferences 的内容 - 最好的来源是官方来源SharedPreferences

您也可以尝试使用 SQLite 之类的数据库,但在您的情况下,应该存储的数据非常简单,因此不会注意到 DB 的任何优点。通过 Intent.putExtra() 通过许多活动传递数据也不是很有用

于 2013-02-03T00:08:03.760 回答