4

機能の1つとして画像をキャプチャするアプリを開発しています。私のホーム画面には、2 つのスピナーがあります。スピナー値を選択した後、[写真を撮る] ボタンをクリックして写真をキャプチャできます。これまでは正常に動作しています。しかし、問題はカメラ アプリの向きにあります。

写真を撮るボタンはカメラを起動します。画像がキャプチャされると、保存され(絶対に問題ありません)、親アクティビティに戻ります。しかし、問題はそれが活動をリフレッシュすることです。戻ってくると、次の有線のものを見ることができます

1.) 横画面 (1 秒) が表示され、縦画面に戻ると、アクティビティが更新され、スピナーの値がリセットされることがあります。

2.) スピナーの値をリセットするだけの場合もあります。

それは本当に迷惑です。この問題を解決する手がかりがありません。皆さんの何人かがこれを解決してくれることを願っています。

とても有難い。

4

1 に答える 1

2

別のアプリ (カメラ) でアクティビティを起動するときに備えておくとよいでしょう。アクティビティが不正なデータを返したり、画面の向きが変更されたり、ユーザーがアプリに戻るまでに非常に長い時間がかかる可能性があります。あなたの説明によると、カメラアプリを起動するたびに向きが変わっているように聞こえます。

Android には、このようなシナリオを処理するための状態管理メソッドが組み込まれています。メソッドをオーバーライドしてonSaveInstanceState()、アクティビティの状態 (スピナー値など) を保存し、その状態を に復元できonCreate()ます。(例はこちら。)これは、カメラアプリを起動している場合、またはユーザーがホームボタンを押してからアプリに戻る場合などを処理します.

編集

onRestoreInstanceState()メモリ不足のためにアクティビティが強制終了され、後で再作成された場合にのみ呼び出されます。Bundle代わりに、渡された to onCreate() (デバイスのローテーション後に再度呼び出される)を使用する方がはるかに信頼性が高くなります。に保存Bundleされていたすべてのものが含まれますonSaveInstanceState()

まで作業を延期する必要がある場合はonResume()、 を使用してクラスにonCreate()いくつかのメンバー変数を設定し、それらの変数を で使用します。ActivityonResume()

于 2012-10-29T12:50:41.627 に答える