WEB开发网
开发学院手机开发Android 开发 Android 保存Activity的状态 阅读

Android 保存Activity的状态

 2010-05-31 14:41:00 来源:WEB开发网   
核心提示:SharedPreferences uiState = getPreferences(0);// Get the preferences editor.SharedPreferences.Editor editor = uiState.edit();// Add the UI state preference valu

SharedPreferences uiState = getPreferences(0);

// Get the preferences editor.

SharedPreferences.Editor editor = uiState.edit();

// Add the UI state preference values.

editor.putString(TEXT_ENTRY_KEY, myEditText.getText().toString());

editor.putBoolean(ADDING_ITEM_KEY, addingNew);

// Commit the preferences.

editor.commit();

}

3. 编写一个restoreUIState方法,当程序重启时,应用在第2步中记录的实例的值。

修改onCreate方法,在最后部分添加对restoreUIState方法的调用。

@Override

public void onCreate(Bundle icicle)

{

[ ... existing onCreate logic ... ]

restoreUIState();

}

private void restoreUIState()

{

// Get the activity preferences object.

SharedPreferences settings = getPreferences(Activity.MODE_PRIVATE);

// Read the UI state values, specifying default values.

String text = settings.getString(TEXT_ENTRY_KEY, “”);

Boolean adding = settings.getBoolean(ADDING_ITEM_KEY, false);

// Restore the UI to the previous state.

if (adding)

{

addNewItem();

myEditText.setText(text);

}

}

4. 使用onSaveInstanceState/onRestoreInstanceState机制来记录当前选择的项目的索引。它仅在非用户显式的指令杀死应用程序时保存和应用。

@Override

public void onSaveInstanceState(Bundle outState)

{

outState.putInt(SELECTED_INDEX_KEY, myListView.getSelectedItemPosition());

super.onSaveInstanceState(outState);

}

@Override

public void onRestoreInstanceState(Bundle savedInstanceState)

{

int pos = -1;

if (savedInstanceState != null)

if (savedInstanceState.containsKey(SELECTED_INDEX_KEY))

pos = savedInstanceState.getInt(SELECTED_INDEX_KEY, -1);

myListView.setSelection(pos);

}

当你运行To-Do List程序时,你应该看到了在会话期间UI状态的保存。但是,它还不能保存to-do列表的项目——你将在本章的后面添加这个核心的功能。

上一页  1 2 3 

Tags:Android 保存 Activity

编辑录入:coldstar [复制链接] [打 印]
赞助商链接