保留 BroadcastReceiver 所做的更改

Keep changes made by BroadcastReceiver

我卡在了这里:

 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");

    }
};

在另一个 Activity 中,当按下 Button 时,MainActivity 得到一个 int。 每当我打开 Activity 时,我都看不到带有 number 变量的 GameTime TextView。

我知道 OnReceive 方法有效,因为我在其中放了一个 toast,并且在从另一个 Activity 发送 int 后我可以看到 toast。 如何在更改 Activity 时保留对 TextView 所做的更改?

谢谢。

一种方式:

在您的 activity 中定义一个接口并在您的 activity 中实现该接口并将其引用传递给另一个 class 并在需要时调用该引用。

示例:

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) 在你的 Activity class

中放置一个接收器
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"));

c) 调用 sendBroadcast

Intent intent = new Intent("trigger_broadcust");
intent.putStringExtra("extra", "data");
sendBroadcast(intent);