在我的应用程序中,我使用按钮onclick打开对话框,如果我再次按下相同的按钮,我想要关闭对话框,打开对话框。
final ImageButton topmenu = (ImageButton) findViewById(R.id.menu);
topmenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final Dialog dialog = new Dialog(Search.this);
if(dialog!=null&&dialog.isShowing()){
dialog.dismiss();
}else{
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.actionmenu);
TextView text1 = (TextView) dialog.findViewById(R.id.textDialog1);
text1.setText("Search");
dialog.show();
}
}
});
如果我再次按下按钮对话框未关闭
答案 0 :(得分:1)
点击按钮。使用以下代码。
if(dialog!=null&&dialog.isShowing())
dialog.dismiss();
else
dialog.show();
答案 1 :(得分:0)
Dialog有一个isShowing()方法,如果对话框当前可见,则该方法应该返回。因此,您可以使用它来查看是否显示对话框并使用dismissDialog()隐藏它。
答案 2 :(得分:0)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button topmenu = (Button) findViewById(R.id.menu);
topmenu.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
final Dialog dialog = new Dialog(MainActivity.this);
if(dialog!=null&&dialog.isShowing()){
dialog.dismiss();
}else{
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.change_password);
TextView text1 = (TextView) dialog.findViewById(R.id.textDialog1);
text1.setText("Search");
dialog.show();
}
}
});
}
}
它有效...... 你的代码的问题可能是它没有在create方法上,也没有在create..first初始化on create,然后声明它。