2017-03-07 82 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); 
}