【问题标题】:Android Studio global static variable accessible from multiple activities可从多个活动访问的 Android Studio 全局静态变量
【发布时间】:2019-12-06 09:56:56
【问题描述】:

在 android studio 中,我想要一个静态(不变)变量,我可以从多个活动中获取它。我的应用程序有几个活动:

  1. 登录活动
  2. 家庭活动
  3. 子活动 1
  4. 子活动 2
  5. 子活动 3

在这些活动中,我需要检查一个值以根据该值执行不同的代码。在我的情况下,它是一个设备地址。我在两个地方使用这个设备地址,因此,目前在两个不同的地方定义它。我知道这是一种不正确的做法。所以我想定义一次并从两个活动中访问它,例如主活动和子活动 1。

我想知道我可以在哪里定义这个变量以及如何包含它。 变量的一个例子是: 私有字符串 Device_Address = "XX:XX:XX:XX:XX:XX";

一个想法是我是否应该将其作为主活动的公共静态变量,然后将该变量导入子活动?

谢谢

【问题讨论】:

  • 只需创建一个新的公共静态最终类并在其中存储值。
  • 谢谢,我认为这可能是要走的路。

标签: android string android-studio android-activity global-variables


【解决方案1】:

在应用程序类中声明可验证

public class App extends Application
{
   private boolean isActive= false;

 public boolean getisActive() {
        return isActive;
    }

    public void setisActive(boolean _isActive) {
        this.isActive= _isActive;
    }

}

而用法是

App.getInstance().getisActive()

在清单中注册应用程序

<application
        android:name=".App"

【讨论】:

  • 目前我的活动扩展了 Appcompatactivity。 public class Home_activity extends AppCompatActivity {所以不能扩展应用程序
  • 但是当您在 Application 类中创建变量时,您可以从任何地方访问此变量
  • 这对我来说就像匕首!通过上下文注入变量。
【解决方案2】:

您可以为此使用全局静态类。您将能够从任何地方访问该课程,并且它不受活动限制。

public class Constants {
  public static final String DeviceAddress = "XX:XX:XX:XX:XX:XX";
}

【讨论】:

  • 我喜欢这个主意。
【解决方案3】:

第一个答案可能对您有用,但在生产中(您将拥有大量持久数据对象,被多个上下文使用)我建议使用 MVVM pattern 和 Dagger。

您的活动将具有不同的视图模型,它们可以保存对某个单例存储库的引用(您将自己实现它并使用 Dagger 将其注入到视图模型中)。

存储库本身旨在提供或存储数据,这些数据可以从数据库、共享首选项等中检索。您的变量也可以存储在那里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2015-03-18
    • 2014-02-15
    • 2011-12-07
    • 2012-10-04
    相关资源
    最近更新 更多