为什么第一次点击时不会关闭对话框(但会显示Toast)? 在第二次点击时,它会解散(再次显示Toast)。
private void networkDialog(){
final Dialog dialog = new Dialog(EnterActivity.this, android.R.style.Theme_Translucent_NoTitleBar);
dialog.setContentView(R.layout.custom_dialog);
Button nobutton = (Button) dialog.findViewById(R.id.dialogButLeft);
nobutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
Toast.makeText(getApplicationContext(), "DIALOG", Toast.LENGTH_LONG).show();
}
});
dialog.show();
}
答案 0 :(得分:2)
试试这种方式。让我告知。我希望它会对你有帮助。
private void networkDialog()
{
final Dialog dialog = new Dialog(EnterActivity.this, android.R.style.Theme_Translucent_NoTitleBar);
dialog.setContentView(R.layout.custom_dialog);
Button nobutton = (Button) dialog.findViewById(R.id.dialogButLeft);
nobutton.setOnClickListener(this);
dialog.show();
}
然后使用 onClick开关语句
public void onClick(View view)
{
switch (view.getId())
{
case R.id.dialogButLeft:
Toast.makeText(getApplicationContext(), "DIALOG", Toast.LENGTH_LONG).show();
dialog.dismiss();
break;
}
}
答案 1 :(得分:1)
有点晚了,但是一位同事有同样的问题并且提到了这个问题,你是否完全确定你没有通过两次调用networkDialog()来创建两个对话框?
在对话框中添加一些独特的文本,当它显示为System.currentTimeMillis()时,您将可以看到它,这样您就可以看到它是否因为文本不同而被调用了两次。 / p>
或者在debug
中添加日志记录/运行答案 2 :(得分:0)
让你的按钮也像这样最终:
private void networkDialog(){
final Dialog dialog = new Dialog(EnterActivity.this, android.R.style.Theme_Translucent_NoTitleBar);
dialog.setContentView(R.layout.custom_dialog);
final Button nobutton = (Button) dialog.findViewById(R.id.dialogButLeft);
nobutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
Toast.makeText(getApplicationContext(), "DIALOG", Toast.LENGTH_LONG).show();
}
});
dialog.show();
}
它在我的应用中为我工作如下:
// Initialize variables
final Dialog passwordDialog = new Dialog(BPMActivity.this,R.style.CustomDialogStyle);
passwordDialog.setContentView(R.layout.password_view);
final Button btnCancel=(Button) passwordDialog.findViewById(R.id.btn_cancel);
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
passwordDialog.dismiss();
}
});
passwordDialog.show();
答案 3 :(得分:0)
我不知道这是否与OP有关。但是我已经把头撞到了墙上很长一段时间试图弄清楚这个。它似乎发生在后来的(5-6 +)Android版本中,并没有出现在我拥有的4.4.2设备上。我发现的解决方案是将Button的setFocusableInTouchMode
设为false:
button.setFocusableInTouchMode(false)
这个答案给了我这个想法: