###前提・実現したいこと
Androidでアプリを作っています。
MainActivityクラスとServiceクラスを作っているのですが、
サービスクラスからメインアクティビティクラスのテキストビューを変更したいです。
Handlerを使った実現方法が知りたいです。
Handlerは使ったことがなく、完全に初心者ですので、出来るだけ詳しく教えていただけると嬉しいです。
###該当のソースコード
MainActivity.java
OnCreate{
中略
SendDataService sds = new SendDataService();
Intent intent = new Intent(MainActivity.this, SendDataService.class);
sds.registerHandler(intent, successHandler);
sds.registerHandler(intent, errorHandler);
success_text = (TextView)findViewById(R.id.success_id);
error_text = (TextView)findViewById(R.id.error_id);
中略
}
// サービスから値を受け取ったら動かしたい内容を書く public Handler successHandler = new Handler() { @Override public void handleMessage(Message msg) { Bundle bundle = msg.getData(); String message = bundle.getString("message"); success_text.setText(message); } }; // サービスから値を受け取ったら動かしたい内容を書く public Handler errorHandler = new Handler() { @Override public void handleMessage(Message msg) { Bundle bundle = msg.getData(); String message = bundle.getString("message"); error_text.setText(message); } };
SendDataService.java
public void registerHandler(Intent intent, Handler updateHandler) {
handler = updateHandler;
Bundle bundle = intent.getExtras(); String message = bundle.getString("message"); if(handler != null){ Message msg = new Message(); Bundle data = new Bundle(); data.putString("message", message); msg.setData(data); handler.sendMessage(msg); } }
###試したこと
こちらのサイト↓を参考にしながら、Handlerでの実現を試みたのですが、エラーが出ます
http://onlineconsultant.jp/pukiwiki/?Service%E3%81%8B%E3%82%89Activity%E3%81%AB%E5%80%A4%E3%82%92%E6%8A%95%E3%81%92%E3%81%9F%E3%82%8A%E7%94%BB%E9%9D%A2%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%9F%E3%82%8A%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
SendDataService.java内のregisterHandlerの
String message = bundle.getString("message");
にNullPointerExceptionが出ます
あなたの回答
tips
プレビュー