2017-03-07 67 views
-1

如果條件 我不知道爲什麼這個代碼不工作的菜單應該被隱藏。不工作調用setVisible

public boolean onOptionsItemSelected(MenuItem item) { 
      String admin = "[email protected]"; 
      if (FirebaseAuth.getInstance().getCurrentUser().getEmail() == admin) { 
       MenuItem menuItem = (MenuItem) findViewById(R.id.settings_item_1); 
       menuItem.setVisible(false); 
      } else { 
       switch (item.getItemId()) { 
        case R.id.settings_item_1: 
         finish(); 
         startActivity(new Intent(getApplicationContext(), Add_User.class)); 
         break; 

        case R.id.settings_item_2: 
         Toast.makeText(getApplicationContext(), 
           "Вышел", Toast.LENGTH_LONG).show(); 
         break; 
       } 
      } 
      return super.onOptionsItemSelected(item); 
     } 

enter image description here

回答

1

嘗試下面的co德:

public boolean onOptionsItemSelected(MenuItem item) { 
     String admin = "[email protected]"; 
     String email=null; 
      switch (item.getItemId()) { 
       case R.id.settings_item_1: 
        email=FirebaseAuth.getInstance().getCurrentUser().getEmail(); 
        if (email!=null && email.equalsIgnoreCase(admin)) { 
         item.setVisible(false); 
        }else { 
         finish(); 
         startActivity(new Intent(getApplicationContext(), Add_User.class)); 
        } 
        break; 
       case R.id.settings_item_2: 
        Toast.makeText(getApplicationContext(), 
          "Вышел", Toast.LENGTH_LONG).show(); 
        break; 
      } 
     return super.onOptionsItemSelected(item); 
    } 
+0

它的作品,但菜單中有這個項目。 如果我點擊這個方法,它會消失 – shcherbuk

+0

@shcherbuk,那是你正在試圖實現的嗎? –

+0

是的,只有條件滿足時才需要物品立即運行。 – shcherbuk

2

電子郵件是字符串,你需要檢查string1.equals("string2")string1 == string2給你假的(2個不同的對象)

變化if (FirebaseAuth.getInstance().getCurrentUser().getEmail() == admin)

if (FirebaseAuth.getInstance().getCurrentUser().getEmail().equals(admin))

+0

不工作(((( (( – shcherbuk

+0

然後,你的firebase配置一定有問題通貨膨脹。你嘗試過調試嗎?你的FirebaseAuth.getInstance()。getCurrentUser()。getEmail()給了什麼? – msecilmis

+0

此外,即使您的Firebase身份驗證不起作用,請改變字符串與我所說的比較。字符串對象很糾結,你不能檢查你正在做的事情。 – msecilmis

0

旁邊的FirebaseAuth.getInstance().getCurrentUser().getEmail() == adminFirebaseAuth.getInstance().getCurrentUser().getEmail().equalIgnoreCase(admin)了明顯的變化,如果你打算隱藏點擊菜單項您必須編輯菜單項目本身。 findViewById(R.id.settings_item_1)給你一個查看對象不MenuItem。 例如,這將隱藏的菜單項,你只需點擊:

item.setVisible(false); 
0

最好的方式得到想要的結果

getMenu().findItem(R.id.settings_item_1).setVisible(false);

MenuItem item = menu.findItem(R.id.settings_item_1); 
item.setVisible(false); 
0
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    String admin = "[email protected]"; 
    String email=null; 
    email=FirebaseAuth.getInstance().getCurrentUser().getEmail(); 
    if (email!=null && email.equalsIgnoreCase(admin)) { 
     menu.findItem(R.id.settings_item_1).setVisible(false); 

    } 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.settings_item_1:{ 
       finish(); 
       startActivity(new Intent(getApplicationContext(), Add_User.class)); 
       break; 
      } 
     case R.id.settings_item_2: 
      Toast.makeText(getApplicationContext(), 
        "Вышел", Toast.LENGTH_LONG).show(); 
      break; 
    } 
    return super.onOptionsItemSelected(item); 
} 
相關問題