是否有可能在某个条件的真实情况下对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);
}
在哪条线上进行状态检查我可以在条件失败期间停止菜单充气..
答案 0 :(得分:2)
如果我理解正确,您需要在onCreateOptionsMenu()
添加条件检查并在不符合条件时返回false
。
然而,onCreateOptionsMenu()
只被称为第一次需要创建一个菜单,一旦创建了一个菜单(返回true),那么在它因某种原因失效之前不会被调用(3.0+这样做在各种场合,但< 3.0没有),例如活动结束。每次按下菜单键之后,在显示菜单之前调用onPrepareOptionsMenu()
(我认为这是方法)。
希望这就是你要找的东西。