我有两种不同的活动。 MainActivity , ContactList &的 ContactDetails 即可。现在,从MainActivity用户将点击Add new,应用程序将打开ContactList屏幕,用户可以从中选择任何联系人以查看打开ContactDetails活动的详细信息。现在,如果用户选择任何否。从ContactDetails,应用程序将返回MainActivity并添加选定的否。在arraylist。我能够添加数据但我的问题是每当添加新记录旧记录被删除。我发现evertime的原因是我从ContactDetails打开MainActivity 它会创建新的Activity 。所以我正在寻找一种方法来使用 OnResume 或 OnResult 方法来解决问题。
在ContactDetails中
Intent intent = new Intent(getBaseContext(),MainActivity.class); intent.putExtra(“CONTACT_NO”,CONTACT_NO); startActivity(意图)
在MainActivity OnResume方法
String data = getIntent()。getExtras()。getString(“keyName”);
arr.add(数据);
答案 0 :(得分:0)
如果您希望在活动的整个生命周期内保留数据,SharefPreferences将为您提供良好的服务。一个例子:
写(onPause / onDestroy):
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putInt(getString(R.string.saved_high_score), newHighScore);
editor.commit();
阅读(onResume / onCreate):
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
int defaultValue = getResources().getInteger(R.string.saved_high_score_default);
long highScore = sharedPref.getInt(getString(R.string.saved_high_score), defaultValue);
了解更多here。
<强>更新强>
或者,您可以使用onSavedInstanceState
。例如:
保存状态:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the user's current game state
savedInstanceState.putInt(STATE_SCORE, mCurrentScore);
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel);
// Always call the superclass so it can save the view hierarchy state
super.onSaveInstanceState(savedInstanceState);
}
恢复状态:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); // Always call the superclass first
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
mCurrentScore = savedInstanceState.getInt(STATE_SCORE);
mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL);
} else {
// Probably initialize members with default values for a new instance
}
...
}
有关管理活动状态here的更多信息。
答案 1 :(得分:0)
从MainActivity.java中获取列表的位置,将其作为公共静态ArrayList或String数组,并且不要在MainActivity.java中初始化它。
此外,如果您没有为MainActivity调用finish()(转到ContactListActivity.java),则将新数据添加到onResume()中的arraylist中。但请记住要检查 - 是否有新数据要添加,因为这是第一次没有数据要添加(根据您发布的问题)。