Как установить значение в переменную из одного класса и получить значение этой переменной из другого класса?
Я хочу установить данные в переменную класса и хочу получить данные этой переменной в другом классе.
Я проверил пример. Но я получаю нулевое значение.
Пример класса 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
Как получить доступ к основному классу?
Благодарю.
3 ответа
Вы должны сказать, что переменная данных является статической переменной, это означает, что она одинакова для всех экземпляров данных. Как только вы это сделали, вам не нужен экземпляр 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("привет")
редактировать: Но, как пишет Stultuske, вы должны освежить в общих чертах. Мое "решение" исправит ваш тест, но оно не очень хорошее, поскольку создание всего глобального приведет к путанице, как только вы начнете работать с более крупными приложениями.
Это ноль, потому что вы создаете новый объект из данных!!! Если вы хотите получить значение из Data, вы должны передать объект Data в ваш метод Test.
То, как это делается сейчас, execute()
не имеет возможности узнать ценность объекта, потому что это новый для него. У вас есть два решения для этого:
Вы можете положить
text
переменная вstatic
Таким образом, значение будет общим для всех экземпляров. любойData
объект сможет изменить значениеtext
и вы сможете изменить переменную без создания экземпляра.Вы также можете передать
Data
объект внутри параметровexecute()
функция. Таким образом, каждыйData
объект, который вы создадите, будет иметь свой собственныйtext
переменная.