我正在为我的Android应用程序设置一些基本设置,我遇到了一些问题。首先,我无法弄清楚如何使用操作栏右上角的三点菜单打开“设置”。所以我暂时创建了一个调用chooseSettings的按钮:
public void chooseSettings(View view) {
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
}
这是我的PreferenceActivity类的代码:
public class PreferenceActivity extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.preferences);
}
}
哪种作品。这导致我的屏幕看起来像这样:。
答案 0 :(得分:2)
溢出菜单中的设置
要使用溢出菜单中的“设置”,您需要覆盖onOptionsItemSelected方法(如果尚未覆盖)并处理正确的ID。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
// Code to show settings.
return true;
}
return super.onOptionsItemSelected(item);
}
将R.id.action_settings
替换为菜单项的ID。
显示PreferenceFragment
正如您在图片中所示,您的偏好设置屏幕与现有布局重叠。
请注意,您只能替换添加dynamically的片段。
我猜你的屏幕的xml有按钮Guess Country和Guess Flags被夸大并且没有动态添加为片段所以通过添加偏好片段它只会显示重叠。
<强>解决方案强>
您可以采取的一种方法是创建并启动一个新活动,该活动将加载您的首选项片段。
例如,如果您创建了一个名为SettingsActivity
的类,它将加载首选项(不要忘记添加到AndroidManifest):
public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new PreferenceActivity()).commit();
}
}
然后在onOptionsItemSelected
中,您可以开始设置活动。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
Intent intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
return true;
}
return super.onOptionsItemSelected(item);
}
否则,您需要更改主布局以使用类似框架布局的内容,以便您可以正确添加/删除/替换片段。