Как установить значение в переменную из одного класса и получить значение этой переменной из другого класса?

Я хочу установить данные в переменную класса и хочу получить данные этой переменной в другом классе.

Я проверил пример. Но я получаю нулевое значение.

Пример класса 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 переменная.

Другие вопросы по тегам