我又找了几个小时,没找到我理解/正在寻找的答案.
我有一个首选项屏幕,当用户点击菜单中的设置时会打开该屏幕.这有效.
但是,当他完成设置时,我如何才能最好地使用户关闭此屏幕.
我喜欢在Chrome中完成的方式,您可以在其中返回上一个屏幕.
其他可能性也受到赞赏.
活动,属于偏好(它应该返回):
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void startGame(View view) { Intent intent = new Intent(this,Game.class); startActivity(intent); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.layout.game_settings,menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: getFragmentManager().beginTransaction() .replace(android.R.id.content,new SettingsFragment()) .commit(); return true; default: return super.onOptionsItemSelected(item); } } }
喜好:
public class SettingsFragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.layout.preferences); } }
XML:
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="@string/game_settings"> <ListPreference android:title="@string/circle_setting_title" android:key="circle_setting" android:summary="@string/circle_setting_summary" android:entries="@array/circle_setting_amount" android:entryValues="@array/circle_setting_amount_value" android:defaultValue="3"/> <ListPreference android:title="@string/color_setting_title" android:key="color_setting" android:summary="@string/color_setting_summary" android:entries="@array/color_setting_amount" android:entryValues="@array/color_setting_amount_value" android:defaultValue="3"/> </PreferenceCategory> </PreferenceScreen>
解决方法
要使MainActivity成为首选项的父活动:
假设你的res / xml文件夹中已有prefs.xml(或任何你喜欢的名字)文件:
假设你的res / xml文件夹中已有prefs.xml(或任何你喜欢的名字)文件:
在您的清单中声明您的活动(在应用程序部分):
<!-- Main activity --> <activity android:name="com.example.app.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- Preferences --> <activity android:name="com.example.app.PrefsActivity" />
然后,假设您有一个菜单,一个按钮或任何您想要显示的内容
使用PreferenceScreen,只需将此行添加到事件处理程序:
startActivity(new Intent(this,PrefsActivity.class));