【发布时间】:2016-11-13 17:27:59
【问题描述】:
所以,我的应用程序具有 BroadcastReceiver 并接收来自其他应用程序的通知。问题是,我收到一条消息,通过 Toast 在手机中显示它,但我想将它设置为在我的 TextView 上可见。我的整个应用程序中只有两个类。
我的接收器是我自己的类,它扩展了 BroadcastReceiver,它的 onReceive 方法如下所示:
@Override
public void onReceive(Context context, Intent intent) {
String value = intent.getExtras().getString("hiddenMessage");
MainActivity.getInstace().updateTheTextView(value);
}
这是更新 textView 的方法的代码。该方法在 MainActivity 类中:
public void updateTheTextView(final String textFromNotification) {
final Context context = this;
Toast toast = Toast.makeText(context, "Message received: " + textFromNotification, Toast.LENGTH_LONG);
toast.show();
((Activity) context).runOnUiThread(new Runnable() {
@Override
public void run() {
textV1.setText(textFromNotification);
}
});
}
问题是,当我从一个应用程序发送通知并在此处接收时,文本不可见。它仅在此应用程序打开时可见。当我的应用程序未打开时,如何将文本设置为字段?将消息存储到某个类字段并在 onResume 方法中使用 setText()?
【问题讨论】:
-
上面的代码在哪里?广播接收器实例是否在同一个类中创建和注册/注销?
-
将其存储在 sharedpreferences 中并加载 onCreate
-
@clownba0t 我更新了我的问题并添加了更多信息。
-
MainActivity.getInstace()[sic] 方法有什么作用?