2016-04-25 5 views
4

短い質問:は、それが、その後savedInstanceStateに戻ってデータを取得するための活動にと活動の次回の起動時にfinish()を呼び出し、onSaveInstanceState()方法を使用してデータを保存することは可能ですか?または、アクティビティのfinish()はデータがなくなったことを意味しますか?onSaveInstanceStateとフィニッシュ()

最初の回答が正しい場合、nullonCreate()にありますが、データが保存されているため、実装に問題があります。

答えて

5

それは、その後の活動に、次の時にフィニッシュ()を呼び出し、onSaveInstanceState()メソッドを使用してデータを保存することは可能です)○:二答えが正しければ、私は一緒に私の活動を接続する方法を再考する必要がありますアクティビティを開始して、データをsavedInstanceStateに戻しますか?

それともフィニッシュは()のアクティビティのデータがなくなっている意味するのでしょうか?

はい。

  • 構成の変更(例えば、画面回転)
  • プロセスの終了(:保存されたインスタンスの状態Bundleは、ユーザーの視点から、あなたの活動がまだ残っているが、それは技術的な理由のために破壊され、例のためでありますユーザーは—など、finish()は、あなたがそれを直接呼び出す—他の理由で呼び出された場合、ユーザーはBACKを押す

)かなり迅速にあなたのアプリケーションに戻って、次に保存されたインスタンスの状態は、もはや必要ありませんし、破棄することができます。

結果として、保存されたインスタンスの状態Bundleは、保持したい一時的なデータのためのものですが、部分的に塗りつぶされたフォームの内容など、構成の変更やプロセスの終了に苦しんでいます。 。

+0

説明していただきありがとうございます – Ellrohir

+0

ダイアログが表示されずに画面を回転させるだけの場合は、テキストフィールドを編集するだけです - onSaveInstanceStateを実装する必要はありません - すべての編集テキストにIDが必要ですxmlの値。 – Robert

+0

今私の解決すべき問題は次のとおりです。メインアクティビティとその他の3つのアクティビティがあり、メインのボタンをクリックすると呼び出されます。私が活動に行くとき、実行された行動があり、結果についての主な活動を知らせる必要があります。私はインテントを使ってアクティビティを開始し、アプリの起動時にいくつかのデータを渡す方法を知っています。しかし、私が新しい活動を続けていくと、古いものは残っていて混乱します。これがfinish()を使って終了させる理由です。これを処理するより良い方法はありますか? – Ellrohir

関連する問題