0
我有一個菜單項顯示在我的操作欄中,我希望顯示「登錄」或「註銷」取決於用戶是登錄還是顯示登出。但是,我無法改變文本,因爲爲了這樣做,我必須從我的onOptionsSelected()
方法中調用invalidateOptionsMenu()
。我目前有一個方法來更新應顯示的文本,這工作正常,但爲了顯示該文本,我必須重新創建選項菜單。登錄/註銷與操作欄/菜單項
下面是我的一些代碼:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
this.menu = menu;
updateMenuTitles();
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.login:
if (!loggedIn) {
Authentication();
} else {
loggedIn = false;
authentication = false;
updateMenuTitles();
Toast.makeText(getApplicationContext(),"Log Out Successful",Toast.LENGTH_SHORT).show();
}
break;
}
return super.onOptionsItemSelected(item);
}
private void updateMenuTitles() {
MenuItem bedMenuItem = menu.findItem(R.id.login);
if (loggedIn) {
bedMenuItem.setTitle("Log Out");
}else {
bedMenuItem.setTitle("Login");
}
}
不能使用'setVisibility'上'MenuItem' – jhobbie
是的,你可以查看文檔:(http://developer.android.com/reference/android/view/MenuItem .html#setVisible(boolean)) –
這就是'setVisible',它沒有'GONE'選項,這是你需要的,它不適用於布爾值。它所做的就是阻止我點擊按鈕。 – jhobbie