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

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

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

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

Android Studio

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

Q&A

解決済

1回答

1700閲覧

画面回転後の復元処理

kamoyama

総合スコア6

Android

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

Android Studio

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

0グッド

0クリップ

投稿2018/06/27 13:22

前提・実現したいこと

AndroidStudioでEditText及びButtonによるTextViewの編集機能を作っています。
画面回転後の復元処理を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

回転前にTextview2が表示している文字列を回転後に復元するよう処理を書いたつもりなのですが、
復元のための

if(savedInstanceState != null){ String text = savedInstanceState.getString("text"); tv_1.setText(text); }

にてNullPointerExceptionが発生しアプリが落ちてしまいます。
どの部分が問題なのかわからず質問させていただきました。
以下エラーメッセージです。

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.koumei.myapplication/com.example.koumei.myapplication.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2902) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037) at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4773) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4682) at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6642) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference at com.example.koumei.myapplication.MainActivity.onCreate(MainActivity.java:46) at android.app.Activity.performCreate(Activity.java:7131) at android.app.Activity.performCreate(Activity.java:7122) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2882) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037)  at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4773)  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4682)  at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)  at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:193)  at android.app.ActivityThread.main(ActivityThread.java:6642)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 

該当のソースコード

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ EditText et_name; TextView tv_name, tv_1; @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); tv_1 = (TextView)findViewById(R.id.textView2); outState.putString("text", tv_1.getText().toString()); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button bt_ok = findViewById(R.id.button_ok); bt_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { EditText et_1 = (EditText)findViewById(R.id.editText); tv_1 = (TextView)findViewById(R.id.textView2); String text = et_1.getText().toString(); tv_1.setText(text); } }); Button bt_1 = (Button) findViewById(R.id.button_1); bt_1.setOnClickListener(this); Button bt_2 = (Button) findViewById(R.id.button_2); bt_2.setOnClickListener(this); Button bt_3 = (Button) findViewById(R.id.button_3); bt_3.setOnClickListener(this); et_name = (EditText)findViewById(R.id.editText_name); tv_name = (TextView)findViewById(R.id.textView_name); if(savedInstanceState != null){ String text = savedInstanceState.getString("text"); tv_1.setText(text); } } @Override public void onClick(View view) { ImageView iv_droid1 = (ImageView) findViewById(R.id.imageView_droid1); switch (view.getId()){ case R.id.button_1: iv_droid1.setImageResource(R.drawable.android_logo); break; case R.id.button_2: iv_droid1.setImageResource(R.drawable.android_logo_red); break; case R.id.button_3: iv_droid1.setImageResource(R.drawable.android_logo_blue); break; } } public void inputName(View view){ String name = et_name.getText().toString(); tv_name.setText(name); } class OkButtonClickListener implements View.OnClickListener{ @Override public void onClick(View view) { EditText et_1 = (EditText)findViewById(R.id.editText); TextView tv_1 = (TextView)findViewById(R.id.textView2); String text = et_1.getText().toString(); tv_1.setText(text); } } }

補足情報(FW/ツールのバージョンなど)

AndroidStudio3.1.3

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。
復元のための

if(savedInstanceState != null){ String text = savedInstanceState.getString("text"); tv_1.setText(text); }

の部分を以下のように変更することでエラーが解消されました。

if(savedInstanceState != null){ tv_1 = (TextView)findViewById(R.id.textView2); String text = savedInstanceState.getString("text"); tv_1.setText(text); }

投稿2018/06/27 13:32

kamoyama

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問