0
我試圖根據變量的值顯示和隱藏導航抽屜菜單項。我的課的開始是這樣的:Android檢查值和重繪菜單
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
public boolean subCreated = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu navMenu = navigationView.getMenu();
navigationView.setNavigationItemSelectedListener(this);
//Highlight the MainActivity (as default) on start
navigationView.setCheckedItem(R.id.nav_new);
//Hide participant specific menu items
if(subCreated == false){
navMenu.findItem(R.id.nav_start).setVisible(false);
navMenu.findItem(R.id.nav_delete).setVisible(false);
} else {
navMenu.findItem(R.id.nav_start).setVisible(true);
navMenu.findItem(R.id.nav_delete).setVisible(true);
}
}
...
subCreated
最初設置爲false,應用程序啓動。在onCreate
方法中,我正在檢查subCreated
的值。如果爲false,則隱藏2個菜單項,否則顯示它們。
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
switch (id) {
case R.id.nav_new:
subCreated = true;
break;
...
最初隱藏菜單項不顯示,當用戶點擊菜單項:
當用戶選擇一個特定菜單項我設置的subCreated
值。我猜測它是因爲該檢查僅在應用程序首次啓動時執行。什麼是正確的方法來檢查變量的值,然後根據值執行一個操作(顯示一個菜單項)?
我知道我只需在onNavigationItemSelected()
內顯示/隱藏項目即可實現此功能。但我試圖用靜態/實例變量來實現這一點,因爲我將其視爲會話變量,我可以在其他方法中檢查其他(與菜單無關的)功能
我想過這樣做,但我之所以會問設置和檢查一個變量,是因爲我把它看作是一個會話變量,它貫穿整個會話,我可以用其他方法引用其他功能,如好。有沒有辦法在主類中設置靜態/實例變量呢? – Simon
你想使用一個變量來控制顯示/隱藏項目菜單,並且想要保存這個變量在某個地方使用?如果爲true,則可以保存爲首選項,然後可以在任何地方獲取/更改此值。 – dolphin
是的,這聽起來不錯。在這樣的導航菜單的上下文中實現首選項的代碼是什麼? – Simon