スマホの画面の回転への対応 Android Studio 3.3でJAVAプログラミング
スマホの画面が回ると入力内容が消えるので、回転してもデータが保持されるように対応する方法を学習しました
Android Studio 3.3で本を片手に模倣プログラミングをはじめて7日目になりました。前回は多言語への対応をする方法を30分で学習しました。今回は、スマホの画面の回転に対応する方法を学びます。
現在のAndroid Studio 3.3のバージョンは画面の回転に対応しているようですが、著者が本を書いた時点では、アプリの何らかのボタンを押した後に画面を回転させると、TextViewが処理前の値(文字列)に戻ってしまう現象がありました。
その原因にはonDestoroy()メソッドが呼び出されてアクティビティーが破棄されると書かれていました。
onDestoroy()メソッドとは、検索してみると、Activityを破棄するための呪文のようです。
著者が作ったアプリはホームボタンを押しても入力内容が保持されており、本に書かれているような不具合は起きませんでした。もしかしたら古いバージョンのスマホでは画面が回転するとこのような不具合が生じるのかもしれません。
念のため、この現象について学んでみることにしました。
対処法
ActivityのonSaveInstanceState()メソッドをオーバーライドして必要なデータを保存します。保存したデータはonRestoreInstanceState()メソッドもしくはonCreate()メソッドで読み込み(ロードし)ます。
(まったくもって、ど素人の私にはどういうことかわかりません!ぐぐると他の方のページにも同様の解決法が示されていました。)
保存にはputデータ型、読み込みにはgetデータ型という単語を使います。
データ型の種類はboolean、int、double、String型があります。
@Override //保存する方法
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putDouble("任意の文字列A", 保存内容B);
}
@Override //保存内容を読み込む方法
protected void onRestoreInstanceState(Bundle savedInstancesState) {
super.onRestoreInstanceState(savedInstancesState);
if (savedInstancesState != null){
stdWeight = savedInstancesState.getDouble("任意の文字列A");
TextView stdWeightText = (TextView) findViewById(R.id.stdWeightText);
String B = myFormat.format(保存内容B);
B.setText(Bに任意のテキストと保存内容Bを読み込む);
}
}
まだど素人の私には「構文はこうするのだ!」というところまでしかわかりませんが、これでうまく動作しました。
大文字小文字を間違っていないか、まぎらわしいidにして見間違いがないか、等を確認していけば、きちんと動きました。
参考図書
この記事を書いている2019年3月の時点でKindle Unlimited読み放題サービスで無料で読めました。関連記事
- Android Studio 3.3 誕生日リマインダーアプリ制作記 [メソッドはスーパータイプのメソッドをオーバーライドまたは実装しません]のエラーで躓く
- Android Studio 3.3 で標準体重計算アプリを作ってみた!JAVAプログラミング(ど素人3作目の模倣アプリです!)
- スマホの画面の回転への対応 Android Studio 3.3でJAVAプログラミング
- Android Studio 3.3 でメモ帳アプリを作ってみた!(ど素人2作目の模倣アプリです!)
- Android Studio 3.3をインストールしてみた! 2019年3月の出来事です!
コメント
コメントを投稿