0

条件が満たされている場合にAndroidメニューを膨らませる可能性はありますか、それが可能であることを願っています。

条件チェックが失敗した場合にメニューが膨張しないようにするために、条件チェックコードを配置する必要がある場所

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


 }

どの行で状態チェックを行うか、状態が失敗したときにメニューが膨張するのを止めることができます..

4

1 に答える 1

2

私があなたを正しく理解しているなら、あなたはあなたの条件チェックインを追加して、あなたの条件が満たされないならばonCreateOptionsMenu()戻ることを望むでしょうfalse

ただし、onCreateOptionsMenu()メニューを最初に作成する必要があるときにのみ呼び出され、メニューが作成されると(trueが返されます)、何らかの理由で無効になるまで呼び出されません(3.0+はさまざまな場面でこれを行いますが、<3.0はない)活動終了など。その後メニューキーを押すとonPrepareOptionsMenu()、メニューを表示する前に(これがメソッドだと思います)が呼び出されます。

それがあなたが探しているものであることを願っています。

于 2012-03-13T23:22:09.077 に答える