使用三点菜单中的“设置”显示设置

时间:2014-04-13 19:14:28

标签: android preferencefragment

我正在为我的Android应用程序设置一些基本设置,我遇到了一些问题。首先,我无法弄清楚如何使用操作栏右上角的三点菜单打开“设置”。所以我暂时创建了一个调用chooseSettings的按钮:

a button

    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);
 }
}

哪种作品。这导致我的屏幕看起来像这样:。

this

1 个答案:

答案 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);
}

否则,您需要更改主布局以使用类似框架布局的内容,以便您可以正确添加/删除/替换片段。