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