【问题标题】:How to get a Global variable from one class to another?如何从一个类到另一个类获取全局变量?
【发布时间】:2014-02-20 08:16:29
【问题描述】:

您有一个数据库,我创建了一个包含私有静态类的数据库类 DbHelper 扩展了 SQLiteOpenHelper 以帮助我管理我的数据库。

这个数据库是从四个不同的活动中访问的。

现在我需要的是什么?我有一个这样的 GlobalClass:

public class Question extends Application{
     private String check;
     public String getCheck() {
         return check;
     }
     public void setCheck(String check) {
         this.check = check;
     }
}

在 FirstScreen Activity 中,我有一个 String check 的值。如果我进入其他活动类,没问题。

如果我进入 DBHelper 我不能。我试过这样:

final Question quiz = (Question) getApplicationContext();

final String check  = quiz.getCheck();

它在getApplicationContext() 中显示错误。如何在 DBHelper 类中获得该值

请告诉我语法有什么问题。

【问题讨论】:

标签: android constructor android-context


【解决方案1】:

在 DBHelper 中,除非你不通过它,否则你将不会拥有 ApplicationContext。

代替这个做一件事,在你的应用程序类中创建一个静态字符串并使用它。 因为 Application 类是一个单一的实例,它会一直保留在内存中,因此不会占用太多内存。

public class Question extends Application{
    public static String check = "";
}

取值

public class DBHelper {

    public method() {
        String check = Question.check;
    }

}

【讨论】:

    【解决方案2】:

    您的DBHelper 类中没有Context

    您要么需要在实例化 DBHelper 类时传入 Context(首选但并不总是实用),要么通过执行以下操作从 Question 获取 Context

    ((Question)Question.getAppContext())
    

    然后通过Question 中的getAppContext() 方法返回Context

    【讨论】:

    • @DiscoS2 我们不会在 DBHelper 中有 getAppContext() 方法,因为它不是一个 Activity 类。
    猜你喜欢
    • 2013-10-04
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多