0

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

и где необходимо условие код проверки должно быть установлено для того, чтобы остановить меню от раздувания в случае сбоя проверки conition

@Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.bar, menu); 
      return true; 
    } 

    @Override 
     public boolean onOptionsItemSelected(MenuItem item){ 
     AlertDialog.Builder builder=new AlertDialog.Builder(this); 

      builder.setTitle("Pick An Image") 
        .setMessage("Please select Image One or Image Two:") 
        .setCancelable(false) 
        .setPositiveButton("IMAGE 1", new DialogInterface.OnClickListener(){ 
         public void onClick(DialogInterface Dialog,int id){ 
         //image.setImageResource(R.drawable.image1); 
         } 
        }) 
        .setNeutralButton("IMAGE 3",new DialogInterface.OnClickListener(){ 
         public void onClick(DialogInterface Dialog,int id){ 
         //image.setImageResource(R.drawable.icon); 
         } 
        }) 
        .setNegativeButton("Image 2", new DialogInterface.OnClickListener(){ 
         public void onClick(DialogInterface dialog,int id){ 
         //image.setImageResource(R.drawable.image2); 
         } 
        }); 
      Spinner spinner1=(Spinner)findViewById(R.id.spinner1); 
      Spinner spinner2=(Spinner)findViewById(R.id.spinner2); 
      int dim1=spinner1.getSelectedItemPosition(); 
      int dim2=spinner2.getSelectedItemPosition(); 

      if(dim1==dim2) 
      { 
      Toast.makeText(null, "your source and destination are same", Toast.LENGTH_SHORT).show(); 
      } 
      else 
      { 
       switch(item.getItemId()){ 
      case R.id.buttonone: 
       builder.show(); 
       return true; 
      case R.id.buttontwo: 
       builder.show(); 
       return true; 
      case R.id.buttonthree: 
       builder.show(); 
       return true; 
      case R.id.buttonfour: 
       builder.show(); 
       return true; 
      case R.id.buttonfive: 
       builder.show(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
      } 
     } 
     return super.onOptionsItemSelected(item); 


} 

, в котором линию я сделать чек условия я могу остановить меню от инфляции в состоянии выйти из строя. .

ответ

2

Если я правильно понимая вас, вы захотите добавить свою проверку состояния в onCreateOptionsMenu() и вернуть false, если ваше условие не выполнено.

Однако onCreateOptionsMenu() называется только ВПЕРВЫЕ время, когда необходимо создать меню, если оно создано (возвращается true), то оно не будет вызываться до тех пор, пока по какой-либо причине оно не будет признано (3.0+ делает это в разных случаях , но < 3.0 нет), например, закрытие активности. При каждом нажатии клавиши меню после этого вызывается onPrepareOptionsMenu() (я думаю, что это метод) перед отображением меню.

Надеюсь, это то, что вы ищете.

+0

благодарит за ответ, это поможет мне. –

Смежные вопросы