スマホの画面の回転への対応 Android Studio 3.3でJAVAプログラミング

スマホの画面が回ると入力内容が消えるので、回転してもデータが保持されるように対応する方法を学習しました

スマホの画面を回転するとデータが消える問題に対処 Android Studio 3.3

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にして見間違いがないか、等を確認していけば、きちんと動きました。

参考図書

JavaからはじめようAndroidプログラミング―Android Studio対応版
Kindle Amazon 楽天市場
この記事を書いている2019年3月の時点でKindle Unlimited読み放題サービスで無料で読めました。

関連記事

コメント

このブログの人気の投稿

硬い木、強い樹木のリスト(日本・世界)

Ubuntu初回起動時にWi-Fiが繋がらないというより選択肢が出てこない問題への対処法

【解決】AcerのAspireノートPCでBiosにF2で入る方法が完璧にわかった!

【挑戦】USBメモリー又はSDカードにUbuntuをインストールする方法

【解決】ランダムなハードウェアアドレスをオンにすると家庭用のwifiに繋がらなくなる(Windows10の話)

Package Name(パッケージ名)の決め方 - Android Studio プログラミング

デロンギのオイルヒーターを使ってみた!風呂場のヒートショックの予防策

時間をかけて作ったページがSearch Consoleのインデックスカバレッジで除外されている件について

Android Studio 3.3でメモ帳を作ってみた!初めてのプログラミング

BEAU SOLEIL(ボーソレイユ)スイスの名門寄宿学校