您应该将您的“设置”活动作为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.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(它将打开您的主要活动),然后一旦您返回,您将回到您未更改的MainActivity。
如果这不是您正在寻找的方法,则必须使用onSaveInstanceState执行此操作,并在savedInstanceState!= null时将其恢复到onCreate中。
您认为这比使用内置于Android的SharedPreferences方法更好吗? –
这使用共享首选项,但会自动为您设置屏幕。如果你有足够的风格,他们应该以这种方式进行设置。 – snotyak
非常感谢...最近几天我一直很忙,直到现在还没有机会看到这个。我做的和你几乎一样,但是我把它扩展为常规活动。问题:'addPreferencesFromResource(R.xml.preferences;' - 我在xml下得到一个红线。R下没有资源用于xml。 –