質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

342閲覧

AndroidでServiceクラスからMainActivityクラスのTextViewを変更したい

K-Tomoya

総合スコア11

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2017/09/29 08:49

###前提・実現したいこと
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が出ます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問