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 回答