在android菜单通胀错误之前进行状态检查

时间:2012-03-13 22:45:21

标签: java android if-statement conditional-statements android-menu

是否有可能在某个条件的真实情况下对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);


 }

在哪条线上进行状态检查我可以在条件失败期间停止菜单充气..

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您需要在onCreateOptionsMenu()添加条件检查并在不符合条件时返回false

然而,onCreateOptionsMenu()只被称为第一次需要创建一个菜单,一旦创建了一个菜单(返回true),那么在它因某种原因失效之前不会被调用(3.0+这样做在各种场合,但< 3.0没有),例如活动结束。每次按下菜单键之后,在显示菜单之前调用onPrepareOptionsMenu()(我认为这是方法)。

希望这就是你要找的东西。