2009-10-26 12 views
7

私はたくさんのアクティビティを持つアンドロイドアプリケーションを持っています。すべてのページが新しいアクティビティである本のようなものを考えてください。ユーザーは各アクティビティを変更することができます。たとえば、異なる色のマーカーなどで特定のテキストを強調表示するなど、アプリケーションが存続している限り、この情報を覚えておくことが重要です(そして、これがそうでないときはこれです)。私が理解しているように、この種の情報を保存するための最良のメカニズムは、Preferencesメカニズムというよりは、onSaveInstanceState(Bundle outState)onCreate(Bundle)/onRestoreInstanceState(Bundle)です。私の唯一の問題は、ユーザーが前のページ(アクティビティ)に戻ることができるということです。これを達成するための唯一の方法はfinish()を呼び出すことです。もちろん、現在のアクティビティはonSaveInstanceState(Bundle outState)を呼び出さずに終了します。私はそのページを表す活動をまったく新しいインスタンスにするでしょう。だから私の質問です:finish()を呼び出すことなく、前の活動に戻る方法はありますか?または、この情報を保存するためのより良い方法はありますか?多分静的変数を通して?Android:finish()を呼び出さずに前のアクティビティに戻る

ありがとうございます!

P.S. 私は私のアプリを別々に実装することができるので、すべてのページに独自のアクティビティがあるわけではありませんが、これは私が探している回答ではありません。

答えて

2

私はまったく同じ問題を抱えていました。私が思って、多く試してみたところ、私は最も実現可能な解決策を見つけました。私はActivityを継承し、存在する場合にのみ強制終了する静的メソッドを追加します。つまり、活動が終了するたびに活動を殺す代わりに。私はそれが再び呼び出されるたびにそれを殺す。たとえば、

MyActivity.killIfExists(); 
startActivity(new Intent(this, MyActivity.class)); 

このように、アプリケーションは常にシングルトンになり、その状態をonSaveInstanceStateで保存します。

関連する問題