实施Android设置菜单以更改主要活动的布局

时间:2014-03-01 00:58:24

标签: android android-layout android-preferences

对于我正在制作的应用,我添加了“设置”菜单。到目前为止,我已经有一个复选框选项显示出来。并保持首选项(记住选中或取消选中复选框)。

然而,在我的代码中它什么也没做。我希望用户体验:

  1. 用户转到设置菜单
  2. 用户检查(True)为“Dark Ba​​ckground?”
  3. 当用户返回MainActivity时,RelativeLayout的背景变暗。
  4. 当用户将来再次打开应用时,背景仍然是
  5. 取消选中后,背景将返回原始背景。
  6. 我已经浏览了很多教程和Android文档以及新的波士顿视频等。但是我实现的代码都没有能够做到这一点。它要么崩溃要么什么都不做。

    有人可以解释一下如何做到这一点吗?我无法想象这很难。

    谢谢!

3 个答案:

答案 0 :(得分:0)

在您的Activity的onCreate方法中,获取您的首选项的值,然后根据设置的内容采取相应的行动(这里是伪代码):

public void onCreate(final Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout);  
    RelativeLayout relLayout = (RelativeLayout) findViewById(R.id.myRelativeLayout);

    // get value from shared prefs  to variable sharedPrefValue

    if (sharedPrefValue)
        relLayout.setBackgroundColor(colors.black);

}

答案 1 :(得分:0)

您可以轻松地根据设置更改布局,但只有在重新启动活动时才会看到更改

public void onCreate(final Bundle savedInstanceState)
{
    //...
    int mylayout = R.layout.main;
    if (preferenceIsTrue)
        mylayout = R.layout.mainDark;
    setContentView(mylayout);
    //...
}

答案 2 :(得分:0)

他们回答了我的问题:

使用:

SharedPreferences sharedPreferences = PreferenceManager
            .getDefaultSharedPreferences(this);
    Boolean prefCheckBox = sharedPreferences.getBoolean(
            "background_checkbox", false);

然后使用prefCheckBox检查是否已检查。

此外,为了确保从设置菜单返回时设置了背景,我将其添加到OnActivityResult()方法。