Как сохранить значения в классе из десяти разных фрагментов и извлечь значения из класса в Activity - PullRequest
0 голосов
/ 02 декабря 2018

Я делаю эксперимент.У меня есть 10 фрагментов, один вид деятельности и один класс Java.Я хочу отправить данные в класс из 10 различных фрагментов (10 переменных для 10 фрагментов), а затем получить все значения из класса для действия.Я пытаюсь отправить значение в класс с помощью объекта, подобного

`Calculate calculate = new Calculate();
calculate.a_variable = value;`

, и пытаюсь получить значение из класса в действие,

Calculate Calculate = new Calculate();
textview.setText(calculate.a_variable)

Но яполучить нулевое значение таким образом.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Как указывает @ Raj в другом ответе, проблема с вашим кодом и создание синглтона решит вашу проблему, но если вы хотите иметь более чистый код и лучший подход, вам следует использовать EventBusby greenrobot.

Вы можете добавить его со следующей зависимостью:

implementation 'org.greenrobot:eventbus:3.1.1'

Тогда в вашем классе Activity подпишитесь на изменения со следующим кодом:

 @Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onStop() {
        super.onStop();
        EventBus.getDefault().unregister(this);
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(ModelValue modelValue) {
        Log.d("output", String.valueOf(modelValue.getA()));
    }

Ииз ваших различных фрагментов вы можете отправлять значения следующим образом:

view.findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EventBus.getDefault().post(new ModelValue(4f));
            }
        });

Здесь ModelValue - это мой класс POJO, вы можете создать свой в соответствии со своими потребностями.

Для получения дополнительной информации о EventBus: https://github.com/greenrobot/EventBus

0 голосов
/ 02 декабря 2018

Проблема в том, что класс Calculate имеет разные экземпляры, поэтому вы не можете правильно получить значения переменной.У вас должен быть шаблон синглтона для класса Calculate - чтобы при каждом обращении к классу Calculate у вас был один экземпляр, и вы могли получить желаемые значения.Пожалуйста, обратитесь по этой ссылке https://www.javatpoint.com/singleton-design-pattern-in-java для одиночного и реализовать эту логику для Calculate класса.

...