2012-01-02 9 views
0

私は、メニュー項目のリストを持つアプリを持っています。メニュー項目をクリックすると、対応するアクティビティが開きます。この新しいアクティビティでは、戻るボタンをクリックしてメインリストに戻ると、そのアクティビティは強制終了され、再度起動すると元の状態に戻りません。バックグラウンドのアクティビティが強制終了されないようにしますか?

私の質問は、あなたがそれを離れるときに活動を殺すことはできないのですか?

私はそうのような値を保存しようとした:

protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putString("TO_REMEMBER", "Remember this"); 
    } 

しかし活動が殺さおよび再始動よりも、OnCreateの方法は、任意のデータを読んでいないされたら:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (savedInstanceState != null) { 
//This is not getting fired     
Toast.makeText(this, savedInstanceState.getString("TO_REMEMBER"), Toast.LENGTH_LONG).show(); 
       } 
     } 

この上の任意のヘルプ感謝しています。

+0

あなたは、私がAndroidに新しいブランドだbackStack –

+0

@AdelBoutrosを処理する方法を変更する必要があります。もっと深く説明できますか? – levi

答えて

2

あなたはonSaveInstanceStateを使用してセーブ状態ですが、バックを押すとアクティビティのライフサイクル全体で状態を保存することはできません。これは、オリエンテーションの変更などの状態を保存することを目的としています。オリエンテーションの変更を越えていくつかの状態を保存したい場合は、その必要があります。

  • 一つは、永続的なDBか何かにあなたの状態を保存します。

    は今の活動のライフサイクル全体で何かを保存するために、次の2つのオプションがあります。
  • 第2に、DBに格納しない場合は、getPreferencesを使用し、これを使用して格納します。これにより、特定のアクティビティ専用に保存されます。アクティビティの状態を保存しようとしている場合は、これをお勧めします。

編集:

は健在活動を離れることを推奨/文書化されたアプローチではありません。あなたはServiceをバックグラウンドで実行させることができますが、ActivityのようにUIは含まれません。戻るの代わりにホームボタンを押すと、向きの変更のような動作をします。

つまり、アクティビティはその状態を保存します。つまり、一部のUIコントロールは状態を保存するので、状態を保存する必要はありません。例EditTextは状態を保存します。

参考:

getPreferences Shared Storage Saving Activity State

+0

それで、アクティビティを残しておくのではなく、データを保存してその上に復元する必要がありますか? – levi

+0

編集で返信しました。 – havexz

+0

偉大な答えをありがとう! – levi

-1

あなたがアンドロイドを初めてお使いの方は、初心者のためのチュートリアルのデベロッパーガイドから始めてください。これはhereです。

BackStackについては、hereを確認できます。

関連する問題