您应该将“设置”活动作为 PreferenceActivity (http://developer.android.com/reference/android/preference/PreferenceActivity.html) 而不是普通的活动,假设它不是太复杂。这真的取决于你的偏好屏幕需要什么。
public class Prefs extends PreferenceActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
在您的 res/menu 文件夹中,您可以有一个 menu.xml 对应于用户按下菜单按钮时将显示的内容:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/miPrefs" android:title="Preferences" android:icon="@android:drawable/ic_menu_preferences"></item>
</menu>
然后你可以把它与你的主要活动联系起来:
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu,menu);
return true;
}
然后最后,在您的主要活动中,您可以添加以下内容:
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item){
switch(item.getItemId()){
case R.id.miPrefs:
startActivity(new Intent().setClass(this,Prefs.class));
break;
}
}
整个过程将允许您打开一个 PreferenceActivity(它将在您的 Main Activity 上打开),然后一旦您返回,您将回到未更改的 MainActivity。
如果这不是您要寻找的方法,则必须使用 onSaveInstanceState 进行操作,并在 saveInstanceState != null 时在 onCreate 中恢复它。