Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将10个不同片段中的值存储到类中,并从类中检索到活动中的值_Java_Android_Android Activity - Fatal编程技术网

Java 如何将10个不同片段中的值存储到类中,并从类中检索到活动中的值

Java 如何将10个不同片段中的值存储到类中,并从类中检索到活动中的值,java,android,android-activity,Java,Android,Android Activity,我正在做一个实验。我有10个片段,一个活动和一个java类。我想从10个不同的片段(10个变量对应10个片段)向类发送数据,然后从类向活动获取所有值。我试图使用如下对象向类发送一个值 `Calculate calculate = new Calculate(); calculate.a_variable = value;` 并试图通过 Calculate Calculate = new Calculate(); textview.setText(calculate.a_variable) 但

我正在做一个实验。我有10个片段,一个活动和一个java类。我想从10个不同的片段(10个变量对应10个片段)向类发送数据,然后从类向活动获取所有值。我试图使用如下对象向类发送一个值

`Calculate calculate = new Calculate();
calculate.a_variable = value;`
并试图通过

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

但我用这种方法得到了空值

问题在于
Calculate
类具有不同的实例,因此无法正确获取变量的值。对于
Calculate
class,您必须具有单例模式,这样无论何时访问
Calculate
class,您都有一个实例,并且可以获得所需的值。请参考此链接了解singleton,并为
Calculate
类实现该逻辑。

正如@Raj在另一个答案中指出的那样,这就是代码的问题,创建singleton将解决您的问题,但如果您想拥有更干净的代码和更好的方法,您应该通过以下方式使用
EventBus
绿色机器人

您可以使用以下依赖项添加它:

implementation 'org.greenrobot:eventbus:3.1.1'
然后在活动类中,使用以下代码订阅更改:

 @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类,您可以根据需要创建自己的POJO类

有关
EventBus
的更多信息:

单身汉。共享偏好。SQLite。事件巴士。回调。请仔细研究其中的任何一个。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。