Сохраните изменения, сделанные BroadcastReceiver - PullRequest
0 голосов
/ 22 февраля 2019

Я застрял в этой точке:

 private BroadcastReceiver mReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

            Bundle bundle = intent.getExtras();

            String number = bundle.getString("Time");
            GameTime.setText("" +number + " hours");

    }
};

В другой операции, когда нажата кнопка, MainActivity получает значение int.Всякий раз, когда я открываю Activity, я не вижу GameTime TextView с переменной number.

Я знаю, что метод OnReceive работает, потому что я поместил в него тост, и я мог видеть тост после отправки int из другой Activity.Как сохранить изменения, внесенные в TextView при изменении действий?

Спасибо.

1 Ответ

0 голосов
/ 22 февраля 2019

В одну сторону:

Определите интерфейс в своей деятельности и внедрите интерфейс в свою деятельность, передайте его ссылку другому классу и вызывайте эту ссылку всякий раз, когда вам нужно.

Пример:

a) Создать интерфейс

public interface MyBroadcastListener{
 public void doSomething(String result);
}

b) Инициализировать BroadCastReceiver

public class TestNotifAlarm extends BroadcastReceiver {
private MyBroadcastListener listener;
@Override
public void onReceive(Context context, Intent intent) {
    listener = (MyBroadcastListener)context;
    listener.doSomething("Some Result");
}
}

c) Внедрить интерфейс в Activity

public YourActivity extends AppCompatActivity implements MyBroadcastListener{
// Your Activity code 
public void updateTheTextView(String t) {
    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText(t);
}
@Override
public void doSomething(String result){
     updateTheTextView(result);          // Calling method from Interface
}
}

Другой способ:

a) Поместите получателя в свой класс деятельности

BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
            textView.setText(intent.getStringExtra("extra"));
    }
};

b) Зарегистрируйте BroadCastReceiver

registerReceiver(broadcastReceiver , new IntentFilter("trigger_broadcust"));

в) Звоните sendBroadcast

Intent intent = new Intent("trigger_broadcust");
intent.putStringExtra("extra", "data");
sendBroadcast(intent);  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...