Android 按钮 onclick 如果对话框打开关闭它否则打开它

Android button onclick if dialog open close it else open it

在我的应用程序中,我使用按钮 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();
            }

        }
    });

如果我再次按下按钮,对话框不会关闭

Dialog 有一个 isShowing() 方法,如果对话框当前可见,该方法应该 return。因此,您可以使用它来查看对话框是否正在显示并使用 dismissDialog() 隐藏它。

在按钮的 onClick 中。使用下面的代码。

if(dialog!=null&&dialog.isShowing())
       dialog.dismiss();
    else
       dialog.show();
@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 中初始化。首先在 create 中进行初始化,然后声明它。