xml で次のように定義されたプログレス バー (ぐるぐる待っているスタイル) があります。
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.Holo.ProgressBar.Large"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:id="@+id/progress"
/>
を使用して、アクティビティのonCreate
メソッドで可視性を非表示にします。
progressBar.setVisibility(View.GONE);
を使用してボタンのonClick
イベントで開始します
progressBar.setVisibility(View.VISIBLE);
画面の向きを変更すると、進行状況バーが消えます。方向を変更するとアクティビティが破棄されて再作成され、アクティビティの状態が保存された から新しい方向で再作成されることを理解していBundle
savedInstanceState
ます。Android によって保存されたデフォルトには、 View オブジェクトBundle
に加えられた変更が含まれていないと私は考えていますか?ProgressBar
この場合、向きの変更後に の正しい可視性を回復する唯一の方法は、メソッドをオーバーライドし、このフラグを検査してそれに応じて可視性を設定することによりProgressBar
、フラグを保存することです (例: )。または、ビューオブジェクトの状態を保存することについて本当に明白な何かが欠けていますか?boolean pbState = false/true
onSaveInstanceState
onRestoreInstanceState
ありがとう
アップデート:
以下に示す両方のソリューションが機能します。android:configChanges="orientation|screenSize"
マニフェスト xml ファイルを入れることにしました。ただし、ドキュメントには、この方法は最後の手段としてのみ使用する必要があると記載されています。私のアクティビティはかなり単純なので、マニフェスト xml メソッドは、メイン アクティビティで必要なコードの量を減らします (つまり、onRestoreInstanceState
メソッドはありません)。アクティビティがより複雑な場合は、後者の方法を使用して状態の変更を明示的に定義することをお勧めします。