簡単な質問があります。
メイン アクティビティでテキスト ビューを宣言し、XML ( ) から作成しましたfindViewById
。この値をブロードキャスト レシーバのサブクラスに渡したいと思います。以下は、私の Broadcast コンストラクターです。
public Broadcast(TextView text_dBm) {
this.text_dBm = text_dBm;
}
私の主なアクティビティでは、次のように、新しいブロードキャスト オブジェクトを作成し、内部で textview 値を渡します。
new Broadcast(text_dBm);
しかし、私はまだヌルポインタ例外を取得していますtext_dBm
. とにかく(静的メソッド以外に)アクティビティとブロードキャストレシーバーの間で値を渡すことはできますか?
そうそう。私の放送受信機はプログラムで登録されており(サービス中)、完全に動作しています。
お時間をいただきありがとうございます!
PS: SO でいくつかのスレッドを既に確認しましたが、答えが見つかりませんでした:
ブロードキャスト レシーバーのアクティビティから値を渡す方法は?
主な活動クラス:
public class MainActivity extends Activity {
TextView text_dBm, text_time, text_rssi;
Intent startServiceFromActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_dBm = (TextView) findViewById(R.id.textView_dBm);
new Broadcast(text_dBm);
startServiceFromActivity = new Intent(this, WifiService.class);
startService(startServiceFromActivity);
}
}
放送受信機クラス:
public class Broadcast extends BroadcastReceiver {
WifiInfo wifiInfo;
WifiManager wifiManager_service;
TextView text_dBm;
public Broadcast(WifiManager wifiManager_service) {
this.wifiManager_service = wifiManager_service;
}
public Broadcast(TextView text_dBm) {
this.text_dBm = text_dBm;
}
@Override
public void onReceive(Context context, Intent intent) {
Log.d("RECEIVER", "Receiver running"); // LOG
text_dBm.setText("textview"); // nullpointerexception
}
}