java - 在活动之间同时发送数据,同时不断更新数据
问题描述
基本上,我从 Firebase 实时数据库接收外部传感器数据。我想要做的是同时将数据从我的主要活动发送到另一个活动。
我尝试使用共享首选项,但它只在单击按钮后更新一次,我想要的是第二个活动应该接收在主活动中更新的更改。
主要活动代码:
reff.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String s1=dataSnapshot.child("sensor1").getValue().toString();
String s2=dataSnapshot.child("sensor2").getValue().toString();
et1.setText(s1);
SharedPreferences.Editor editor=sp.edit();
editor.putString("sensor1data",s1);
editor.apply();
第二个活动代码;
sp=getSharedPreferences("s",MODE_PRIVATE);
cc=sp.getString("sensor1data","");
tv.setText(cc);
并SharedPreferences sp;
在两个活动中全局声明
我还尝试添加一个侦听器,但没有可用,每当使用此行时都会出现错误:
sp.registerOnSharedPreferenceChangeListener(this);
上述行的错误:
registerOnSharedPreferenceChangeListener cannot be applied to (android.content.SharedPreferences.OnSharedPreferenceChangeListener) in **SharedPreferences** cannot be applied to (com.example.s1.MainActivity)
我也尝试过这种方式,但在第二行中也出现错误,它说无法解析sharedPreferenceChangeListener
第二行中的符号。
SharedPreferences spla=this.getSharedPreferences("s",MODE_PRIVATE);
spla.registerOnSharedPreferenceChangeListener(`sharedPreferenceChangeListener`);
SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListner =new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
}
};
解决方案
我想要的是第二个活动应该接收在主要活动中更新的更改。
虽然有一些变通方法可以帮助您在获取数据的操作完成后将数据从一个活动发送到另一个活动,但最简单的解决方案是直接在第二个活动中附加一个侦听器。通过这种方式,您可以实时收到有关 Firebase 服务器上发生的每项更改的通知。
推荐阅读
- ruby-on-rails - 使用简单的 for 选择并保存多个复选框
- ruby-on-rails - 多态 has_and_belongs_to_many
- python - 如何根据部分字符串匹配加入两个数据框?
- python - 如何仅针对 Tensorflow 中的给定索引将矩阵乘以标量?
- android - 如何禁用 TabLayout 的点击效果?
- sql - SQL 占总平均值和加权平均值的百分比
- html - 浏览器下载两个 src 相同的 img 元素多少次?
- django - Django select_related() 但只有一些字段
- teradata - 转换要在子句 Teradata 中使用的字符串
- python-3.x - 如何从 Pyspark 中的 FPGrowth 算法中获取前因/后因?