首页 > 解决方案 > 在活动之间同时发送数据,同时不断更新数据

问题描述

基本上,我从 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) {

    }
};

标签: javaandroidfirebasefirebase-realtime-database

解决方案


我想要的是第二个活动应该接收在主要活动中更新的更改。

虽然有一些变通方法可以帮助您在获取数据的操作完成后将数据从一个活动发送到另一个活动,但最简单的解决方案是直接在第二个活动中附加一个侦听器。通过这种方式,您可以实时收到有关 Firebase 服务器上发生的每项更改的通知。


推荐阅读