Отправка данных между действиями одновременно, в то время как данные постоянно обновляются - PullRequest
0 голосов
/ 29 марта 2020

По сути, я получаю данные внешнего датчика из базы данных Firebase Realtime. То, что я пытаюсь сделать, - это отправить эти данные из моей основной деятельности в другую деятельность одновременно.

Я пытался использовать общие настройки, но он обновляется только один раз после нажатия кнопки. Я хочу, чтобы второе действие получало изменения, которые обновляются в основном действии.

Основной код активности:

 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) {

    }
};

1 Ответ

0 голосов
/ 30 марта 2020

я хочу, чтобы второе действие получало изменения, которые обновляются в основном действии.

Хотя существуют некоторые обходные пути, которые могут помочь вам отправлять данные из действия в другой, когда операция получения данных завершена, самое простое решение - подключить слушателя непосредственно во втором действии. Таким образом, вы будете уведомлены в режиме реального времени о каждом изменении, которое происходит на серверах Firebase.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...