我想在包下的所有类中使用变量值。我应该在哪里声明该变量?
答案 0 :(得分:2)
您可以将任何类中的变量声明为static。
public class SomeClass {
static Object yourVariable;
}
并从其他类访问它:
public class OtherClass {
public void method(){
Object local = SomeClass.yourVariable;
}
}
使用变量前面没有修饰符(没有公共,没有私有)来使包可见。 More about modifiers and visibility here
答案 1 :(得分:1)
创建一个具有静态变量的类。 代码如下..
public class ConstantClass {
static String strr = "Your value";
}
您可以使用
访问此变量ConstantClass.strr = "Changed value";
在你的任何一个班级。
答案 2 :(得分:1)
如果您不添加隐私修饰符,则变量是包私有,这意味着它可以被同一个包中的所有类使用。这解决了您的问题。
此外,static
修饰符使变量可用于类而不是对象。对于该类的所有对象,只有一个可能的变量实例。
public class MyClass {
//visible for all classes in the same package
int variable;
//same as above, but static
static int variable;
}
如果它是静态变量,则调用方式:
MyClass.variable
答案 3 :(得分:0)
如果您希望能够从应用程序的任何位置访问变量,则必须使用静态变量。
在一个简单的例子中,你会像这样声明你的变量。
public class Example {
public static string EXAMPLE_STRING = "example";
}
然后,您可以通过类访问该变量,如下所示:
Example.EXAMPLE_STRING
如果您想限制对一个软件包的访问,请删除public关键字。
答案 4 :(得分:0)
您可以使用共享首选项类。这是使用共享首选项
的示例public static final String MyPreferences = "MyPrefs" ;
SharedPreferences sharedPreferences;
Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
sharedPreferences = getSharedPreferences(MyPreferences, Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
//For Save Value (But the value is string)
public void saveValue(String code, String value) {
editor.putString(code, value);
//Dont forget this method must be typed, too...
editor.apply();
}
//For Get Value (But the value is string)
public String getValue(String code) {
return sharedPreferences.getString(code, "");
}
答案 5 :(得分:0)
最好的解决方案是覆盖应用程序类并在那里初始化变量。您可以使用getApplication()从每个活动中获取应用程序,并可以访问全局变量。你需要一个示例代码吗? 积极的效果是你不必处理静态的东西。
答案 6 :(得分:-1)
您可以在任何类中将其声明为 public static 变量。请参阅this link for a small explanation。