0

アプリケーションに 2 つのページがあります。ページ AI からページ B を呼び出しています。ページ BI には、ユーザーが入力する ListView があります。ユーザーが電話の [戻る] ボタンをクリックすると、ページ A に戻ります。しかし、メニューをクリックして [アイテムの追加] をもう一度選択すると、ページ B が開きますが、ListView は空です。ListView でデータを失わずにページ B に戻るにはどうすればよいですか?

4

4 に答える 4

1

ページBを上書きし、onBackPressedデータをどこかに保存します。
次に、onStartページBでデータをリロードします。

于 2012-09-13T10:21:46.447 に答える
0

これを実現する 1 つの方法は、次を使用することSharedPreferencesです。

public void onStop(Bundle bundle)
{
   SharedPreferences mySharedPreferences = getPreferences(MODE_PRIVATE);
   SharedPreferences.Editor editor = mySharedPreferences.edit();
   editor.putBoolean("myBool",true);
   //Continue saving all the data you need to recreate the listView
}

次に、アクティビティを再開するときに、次のように OnCreate() メソッドで設定を再読み込みできます。

public void onCreate(Bundle bundle)
{
    SharedPreferences mySharedPreferences = getPreferences(MODE_PRIVATE);
    // Retrieve the saved values.
    boolean myBool = mySharedPreferences.getBoolean("myBool");
    //Recreate the ListView here
}

そうするのが最もクリーンな方法ではないかもしれません。しかし、onSavedInstanceStateあなたのケースでは使用できないため、実行する必要があります:)

于 2012-09-13T10:38:21.950 に答える
0

ご協力いただきありがとうございます。ページ A で ArrayList を宣言するだけで問題を解決しました。そのため、ページ B に戻ると、ListView のソースはページ A にあるため、簡単にロードし直すことができます。

このアプローチが間違っているかどうかはわかりません。これを行うべきではないと思われる場合は、コメントを残してください。

于 2012-09-13T11:57:49.347 に答える
0

SharedPreferencesを使用して、データをリストに保存およびロードできます

いえ

 @Override
 public boolean onKeyDown(int keyCode, KeyEvent event)  {
 SharedPreferences settingsActivity = getPreferences(MODE_PRIVATE);
 SharedPreferences.Editor prefEditor = settingsActivity.edit();
 prefEditor.putString(LISTFROMB, savedItems);
 prefEditor.commit();
   }
 return super.onKeyDown(keyCode, event);
    }

そして、次のように A にロードします。

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple);

    // Find the ListView resource.
    mainListView = (ListView) findViewById(R.id.list);

    ArrayList<String> selectedItems = new ArrayList<String>();
    SharedPreferences settingsActivity = getPreferences(MODE_PRIVATE);
    String savedItems = settingsActivity.getString(LISTFROMB, "");
    selectedItems.addAll(Arrays.asList(savedItems.split(",")));

    [CALL YOUR ADAPTER HERE WITH THE SELECTED ITEMS LIST]

}
于 2012-09-13T10:37:17.383 に答える