保留 BroadcastReceiver 所做的更改
Posted
技术标签:
【中文标题】保留 BroadcastReceiver 所做的更改【英文标题】:Keep changes made by BroadcastReceiver 【发布时间】:2019-07-15 22:53:40 【问题描述】:我被困在这一点上:
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。 如何在更改活动时保留对 TextView 所做的更改?
谢谢。
【问题讨论】:
【参考方案1】:一种方式:
在您的活动中定义一个接口并在您的活动中实现该接口并将其引用传递给另一个类并在需要时调用该引用。
例子:
a) 创建接口
public interface MyBroadcastListener
public void doSomething(String result);
b) 初始化广播接收器
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 类中放置一个接收器
BroadcastReceiver broadcastReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
textView.setText(intent.getStringExtra("extra"));
;
b) 注册广播接收器
registerReceiver(broadcastReceiver , new IntentFilter("trigger_broadcust"));
c) 调用 sendBroadcast
Intent intent = new Intent("trigger_broadcust");
intent.putStringExtra("extra", "data");
sendBroadcast(intent);
【讨论】:
以上是关于保留 BroadcastReceiver 所做的更改的主要内容,如果未能解决你的问题,请参考以下文章