1

アプリのメイン アクティビティには 3 つのタブがあり、クリックすると、アクティビティの contentView が別のレイアウトに切り替わります。私の問題は、向きが変わると、最初のタブが自動的に選択され、最初のレイアウトが読み込まれることです。

これを修正する方法について最初に考えたのは、タブの場所をsavedInstanceStateまたはsharedPrefsファイルに保存することですが、これらの解決策の1つの問題は、アプリが最初に開かれ、OnCreate()が呼び出されたときにも発生することです. .

明確にするために、私は次のことが起こることを望みます:

  • アプリの読み込み時 (新しいアクティビティ、onCreate() が呼び出されます) - 常に最初のタブを読み込みます
  • アプリの再開時 (アプリの一時停止後、Onresume() が呼び出された後) - 最後に開いたタブを読み込む
  • 向きの変更時 (変更後、OnCreate() が呼び出されましたか?) - 最後に開いたタブを読み込みます

基本的に、アプリが最初に起動されたときの向きの変更 (魔女は OnDestroy() と onCreate() を呼び出します) と onCreate() と onDestory() を区別する方法を見つけようとしています。

可能であれば、マニフェストに configChanges="orientation" 行を追加せずに、スイッチを自分で処理したいと思います。さまざまな画面サイズや密度などを扱うときに問題が発生する可能性があると聞いたからです。

これを達成する方法はありますか、それとも別の動作に落ち着く必要がありますか?

4

1 に答える 1

2

onSaveInstanceState行くのが正しい方法です。アクティビティが終了した後は持続しませ。「バックグラウンド状態に移行する」とき、または方向の変更を行うときのみです。

于 2012-08-12T00:03:20.447 に答える