поскольку я даю возможность и дисквалифицирую выборы меню

Я хочу сделать немного как этот пример, но в android.

 else if (ace.Verificar() == true)
        {
            if (comboBox1.Text == "INVITADO")
            {
                Menu inicia = new Menu();
                inicia.Show();
                this.Hide();
                inicia.toolStripStatusLabel2.Text = " USUARIO : " + textBox1.Text + "******" + " CARGO : " + comboBox1.Text.ToString();
                inicia.iNSERTARALMACENToolStripMenuItem.Enabled = false;
                inicia.aCTUALIZARALMACÉNToolStripMenuItem.Enabled = false;
                inicia.eLIMINARALMACENToolStripMenuItem.Enabled = false;

            }

Это часть, которая у меня есть в android, я хочу inhablitar некие выборы меню с login.

if (fila.moveToFirst() ==true)
            {
                String usua=fila.getString(0);
                String pass=fila.getString(1);
                if (User.equals(usua) && Pass.equals(pass) )
                {
                    Intent intentLogin = new Intent(getApplicationContext(),Menu.class);
                    startActivity(intentLogin);
                    et1.setText("");
                    et2.setText("");
                }

            }
2
задан 18.01.2017, 23:57
0 ответов

Быстрое решение может состоять в том, чтобы использовать putExtra и getExtras, уже после ты сравниваешь полученный string, и если он - x человек, показываешь меню, в случае, который был бы и человеке ты скрываешь какие-то статьи меню:

Активность Login

//En esta variable guardas el usuario que obtengas, yo le he puesto admin directamente
String tipoUsuario= "admin";

Intent i = new Intent(this, Menu.class);
//Envías el usuario hacia la otra actividad
i.putExtra("usuarioIngresado", tipoUsuario);
startActivity(i); 

Активность Меню

Intent intent = getIntent();
  //Recibes el string y lo guardas en tipoUsuario
  String tipoUsuario = intent.getExtras().getString("usuarioIngresado");
 //Comparas el valor recibido con la palabra admin, si son iguales que muestre, de lo contrario que esconda
  if(tipoUsuario.equals("admin"){
      mostrarItems();
  } else {
     esconderAlgunosItems();
  }

private void esconderAlgunosItems()
   {
     navigationView = (NavigationView) findViewById(R.id.nav_view);// Colocas el id de tu NavigationView
     Menu miMenu= navigationView.getMenu();
     miMenu.findItem(R.id.nav_settings).setVisible(false);
     ...... //Colocas todos los items que deseas esconder
   }
1
ответ дан 03.12.2019, 17:37

Сначала посылать данные внутри bundle в Activity, который изменял Ваше меню, это может осуществляться, таким образом:

if (User.equals(usua) && Pass.equals(pass) )  {

   Intent i = new Intent(this, Menu.class);
   intent.putExtra("habilitaOpciones", true); //Habilita opciones.
   startActivity(i); 

}else{

   Intent i = new Intent(this, Menu.class);
   intent.putExtra("habilitaOpciones", false);  //Deshabilita opciones.
   startActivity(i); 

}

Чтобы это получать, внутри класса Menu.java, она признает себя переменной и внутри onCreate () получается стоимость:

private boolean habilitar;
...
...
boolean habilitar = intent.getExtras().getBoolean("habilitaOpciones");

Изменять меню не просто, единственный метод, который может соглашаться на то, чтобы изменять меню, onCreateOptionsMenu() , код, чтобы давать возможность / выводить из строя выборам меню, должен быть внутри этого метода:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    // infla menú de su .xml
    MenuInflater inflater = getSupportMenuInflater();
    inflater.inflate(R.menu.settings, menu);

    if (habilitar) { //Habilita
        menu.findItem(R.id.action_option1).setVisible(false);
        menu.findItem(R.id.action_option1).setVisible(false);
        menu.findItem(R.id.action_option1).setVisible(false);
    }else{ //Deshabilita.
        menu.findItem(R.id.action_option1).setVisible(false);
        menu.findItem(R.id.action_option1).setVisible(false);
        menu.findItem(R.id.action_option1).setVisible(false);
    }
}

Но: как мы изменяем меню, будучи построен?, ответ состоит в том, чтобы называть метод:

invalidateOptionsMenu () Объяви, что меню выборов изменилось, которым он должен быть воссозданным. Метод onCreateOptionsMenu(menu) ее назовутся следующий раз, который будет нуждаться в том, чтобы быть показанным.


Следовательно внутри onCreate() ты получил бы стоимость, которая решает давать возможность / выводить из строя выборам меню, и заставил бы повторно нарисованного меню с новой конфигурацией:

@Override
protected void onCreate(Bundle savedInstanceState) {
...
...
  boolean habilitar = intent.getExtras().getBoolean("habilitaOpciones");
  invalidateOptionsMenu();
...
...
}
1
ответ дан 03.12.2019, 17:37

Теги

Похожие вопросы