0

テキスト入力、スピナー入力、および [オプション] メニューで変更された設定に依存する配列を持つ 2 つ目のスピナー入力を備えた基本的なアプリがあります。

現在、アプリ内でホームを押すかリターンを押すと、デスクトップに戻るか、最近入力した古い入力に戻ります。

アプリがそれ自体の複数のインスタンスを開かないようにして、常に 1 つのインスタンスしか実行されないようにするにはどうすればよいですか? また、入力に入力されたデータとオプション メニューで選択した設定を保存するにはどうすればよいでしょうか?

私はJavaに少し慣れていないので、これが単純な問題であれば申し訳ありません。

4

2 に答える 2

4

アクティビティで onSaveInstanceState と onRestoreInstanceState をオーバーライドします。これらのメソッドを使用すると、データをBundleに保存できます。 また、データをPreferencesに保存することもできます。すべてのアプリケーションで、onSaveInstanceState と onRestoreInstanceState の両方をオーバーライドして、値をバンドルに保存およびロードします。また、onPause の環境設定にデータを保存し、onResume の環境設定を読み込みます。また、 onCreate(Bundle savedInstanceState) で、このようなチェックを行います

    if(savedInstanceState != null)
    {
        m_mainView.restoreInstanceState(savedInstanceState);
    }
    else
    {
        m_mainView.loadGameFromDatabase(getPreferences(MODE_PRIVATE));
    }

これらの慣行は常に私にとってうまくいきました。

于 2010-02-22T07:06:01.270 に答える
2

onPauseアクティビティでオーバーライドされたメソッドを使用し、データをどこかに永続化する必要があります (おそらく共有設定)。次にonResume、永続ストレージからそれらを読み戻して、コントロールに入力する必要があります。

onSaveInstanceStaterestoreInstanceState戻るボタンやホームボタンを押したいときは、友達ではありません。

于 2014-07-08T07:15:28.297 に答える