【问题标题】:How to set Text from another layout without using Shared Preferences or putExtra如何在不使用 Shared Preferences 或 putExtra 的情况下从另一个布局设置文本
【发布时间】:2013-09-15 03:38:57
【问题描述】:

我在不同的活动 A 和 B 中有两个 textView,它们需要具有相同的值。我不能使用 putExtra,因为我不会从 Activity A 转到 B。我不想使用 Shared Preferences。我不想从sqlite中查询。当我在活动 B 上时,有没有办法让我在活动 A 中调用文本?

我能够从 Activity B 获取 Activity A 的 Layout 值,但不能从 Activity A 的 textView 中获取文本值

在活动 B 中

Name1.setText(R.layout.menuview);

这将为我提供 xml 文件的名称值。我想要 xml 文件中这个 textView 的值。

在活动 A 中

m1a = (TextView) findViewById(R.id.m1a);

【问题讨论】:

    标签: android android-layout gettext settext


    【解决方案1】:

    为什么你不能使用共享偏好?
    您可以使用静态变量并将值保存在内存中。

    【讨论】:

    • 活动 1 中的文本可以更改。共享偏好可能会失去价值。
    • 因此,每次文本发生更改时,您也会更新共享首选项中的值。如果是静态变量,你也必须做同样的事情。
    • 我尝试了 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ActivityA.this); SharedPreferences.Editor 编辑器 = prefs.edit(); editor.putString("某事", ""); editor.commit();并检索 SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(ActivityB.this); textView.setText(pref.getString("something", "NULL"));但它没有用
    • 代码块是对的。您在共享偏好中添加了什么。您在代码中发送空白值。保存活动 1 中文本字段中的任何值。它是如何不起作用的?我的意思是错误/响应/输出是什么?
    【解决方案2】:

    您可以在帮助类上使用静态变量。

    public class Helper { static String text; }

    【讨论】:

      【解决方案3】:

      一个活动直接通过引用另一个活动来更改视图属性的方式不是好方法。 因为活动应该引用另一个活动,这是内存泄漏的原因。

      我建议以下方法

      1) 本地广播接收器

      如果你使用它,活动之间的依赖关系就消失了。您还可以实时观察变化。但是要添加一些代码。

      2) 共享偏好

      这是另一种替代方法,但它使用磁盘 io 和磁盘空间。 如果您必须永久保存值,请使用这种方式。

      【讨论】:

        猜你喜欢
        • 2020-10-17
        • 1970-01-01
        • 2011-10-01
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多