我想将数据设置为类的变量,并希望在另一个类中获取该变量的数据。
我测试了一个例子。但我得到零价值。
示例课程Data
:
public class Data {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
在MainActivity
课程中,我执行了设置:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Data data = new Data();
data.setText("HELLO");
System.out.println("GET from Main class: " + data.getText());
// Call the get class method
Test test = new Test();
test.execute();
}
测试类:
public class Test {
public void execute() {
Data data = new Data();
System.out.println(" GET from Test class: " + data.getText());
}
}
输出:
I/System.out: GET from Main class: HELLO
I/System.out: GET from Test class: null
如何访问Main类get?
感谢。
答案 0 :(得分:0)
它是null,因为您从Data创建新对象!如果要从Data获取值,则必须将Data对象传递给Test方法。
答案 1 :(得分:0)
您需要说数据变量是一个静态变量,这意味着它对于所有Data实例都是相同的。完成后,您不需要数据实例。
public class Data {
private static String sText;
public static String getText() {
return sText;
}
public static void setText(String text) {
sText = text;
}
}
然后静态调用数据。 Data.getText()和Data.setText(“hello”)
编辑: 但正如Stultuske写的那样,你应该了解基础知识。我的“解决方案”将修复你的测试,但它不是一个好的测试,因为一旦你开始处理更大的应用程序,一切全局将导致一团糟。
答案 2 :(得分:0)
现在它的工作方式,execute()
无法知道对象的价值,因为它是一个新的对象。你有两个解决方案:
您可以将text
变量放在static
中:这样,该值将由所有实例共享。任何Data
对象都可以更改text
的值,您可以在不创建实例的情况下更改变量。
您还可以在Data
函数的参数内传递execute()
对象。这样,您将创建的每个Data
对象都将拥有自己的text
变量。