我正在为我的 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

有帮助吗?

解决方案

溢出菜单中的设置

为了使用溢出菜单中的设置,您需要覆盖 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

正如您在图片中所示,您的首选项屏幕与现有布局重叠。

请注意,您只能替换您添加的片段 动态地.

我猜测您的屏幕上具有“猜测国家”和“猜测旗帜”按钮的 xml 已被夸大,并且没有动态添加为片段,因此通过添加首选项片段,它只会重叠显示。

解决方案

您可以执行此操作的一种方法是创建并启动一个新活动,该活动将加载您的首选项片段。

例如,如果您创建名为 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);
}

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top