Проверка состояния перед ошибкой инфляции меню Android - PullRequest
0 голосов
/ 14 марта 2012

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

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

    @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);


 }

, в какой строке я делаю проверку состояния, я могу остановить меню от надувания во время сбоя условия ..

1 Ответ

2 голосов
/ 14 марта 2012

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

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

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

...