Java 如何将10个不同片段中的值存储到类中,并从类中检索到活动中的值
我正在做一个实验。我有10个片段,一个活动和一个java类。我想从10个不同的片段(10个变量对应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) 但
`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。事件巴士。回调。请仔细研究其中的任何一个。请阅读-总结是,这不是一个理想的方式来解决志愿者,可能会适得其反获得答案。请不要将此添加到您的问题中。