2012-09-08 24 views
2

我有一个复选框的选项菜单。当用户点击时,我可以选中并取消选中复选框。但是,我使用SharedPreferences来存储这个复选框的值,所以我还需要做的是用SharedPreferences的pref值中存储的任何东西来初始化复选框,例如,如果pref是true/false,则将复选框设置为checked /选中。如何初始化选项菜单复选框

我想我需要把一些代码放到我的onCreateOptionsMenu中,而且我显然需要使用.setChecked(首选项)设置复选框,但是如何以编程方式引用复选框本身?

菜单使用创建:

public boolean onCreateOptionsMenu(Menu menu) { 
MenuInflater inflater = getMenuInflater(); 
inflater.inflate(R.menu.options_menu, menu); 
return true; 
} 

复选框可以使用选中/取消:

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.two_week: 
      if (item.isChecked()) { 
       item.setChecked(false); 
      } 
      else { 
       item.setChecked(true); 
      } 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

回答

9

我认为你缺少的唯一方法是菜单的则findItem()。您可以轻松地将任何SharedPreferences(称为prefs这里)是这样的:

SharedPreferences prefs; 
... 

public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.options_menu, menu); 

    boolean checked = prefs.getBoolean("two weeks", false); 
    menu.findItem(R.id.two_week).setChecked(checked); 
    return true; 
} 
+0

完美,这正是我一直在寻找 - 感谢萨姆。 –

相关问题