私はBroadcastReceiverを持ち、他のアプリケーションから通知を受け取るアプリケーションを持っています。問題は、Toast経由で電話にメッセージを表示していますが、TextViewに表示するように設定したいのです。私は全アプリで2つのクラスしか持っていません。バックグラウンドプロセスでtextViewにテキストを設定する
@Override
public void onReceive(Context context, Intent intent) {
String value = intent.getExtras().getString("hiddenMessage");
MainActivity.getInstace().updateTheTextView(value);
}
ここでのTextViewを更新するメソッドのコードがあります:
私の受信機は、BroadcastReceiverを拡張し、そのonReceive方法は次のようになり、私自身のクラスです。このメソッドは、MainActivityクラスである:私は1つのアプリからの通知を送信し、ここでそれを受信したときに問題がある
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()を使用しますか?
上記のコードはどこにありますか?ブロードキャストレシーバインスタンスが作成され、同じクラスに登録/登録解除されていますか? – clownba0t
sharedpreferencesに保存してonCreateをロード – uguboz
@ clownba0t質問を更新し、さらに情報を追加しました。 – TheOpti