我有以下代码。它显示了一个带有textview和一些按钮的对话框。当按下一个按钮时,对话框应该关闭。但它没有。它是否有错误?我尝试了dialog.dismiss和dialog.cancel,但它不起作用。
解决方案是什么?
AlertDialog.Builder alert = new AlertDialog.Builder(
Gestionarez.this);
final TextView Dtv = new TextView(Gestionarez.this);
printeaza=new Button(Gestionarez.this);
stergere=new Button(Gestionarez.this);
trimitere=new Button(Gestionarez.this);
final AlertDialog dialog = alert.create();
trimitere.setText("Trimite");
trimitere.setTextSize(10);
trimitere.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
printeaza.setText("Printeaza");
printeaza.setTextSize(10);
printeaza.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.dismiss();
dialog.cancel();
}
});
stergere.setText("Sterge");
stergere.setTextSize(10);
stergere.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
boolean deleted = file.delete();
Toast.makeText(Gestionarez.this, str+ " a fost sters ",
Toast.LENGTH_SHORT).show();
lv2.invalidateViews();
}
});
LinearLayout ldialog = new LinearLayout(Gestionarez.this);
LinearLayout ldialogb = new LinearLayout(Gestionarez.this);
ldialog.setOrientation(LinearLayout.VERTICAL);
ldialogb.setOrientation(LinearLayout.HORIZONTAL);
Dtv.setText(text);
ldialog.addView(Dtv);
ldialogb.addView(trimitere);
ldialogb.addView(printeaza);
ldialogb.addView(stergere);
ldialog.addView(ldialogb);
ldialogb.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Dtv.setGravity(Gravity.CENTER | Gravity.BOTTOM);
Dtv.setPadding(60, 60, 60, 60);
alert.setView(ldialog);
alert.show();
}
});
}
答案 0 :(得分:2)
好像你正在展示一个新创建的对话框,你在
中引用它alert.setView(ldialog);
alert.show();
你试图解雇一个与之不同的对话框:
dialog.dismiss();
dialog.cancel();
从对话框中删除最后一行并更改
的最后一行“alert.show();
”
dialog = alert.create();
dialog.show();
现在你有一个对话框的引用,它会起作用....
答案 1 :(得分:0)
尝试dialog.finsh();
然后dialog.dismiss();
或者这个onClick:
if (dialog != null && dialog.isShowing()) {
dialog.dismiss();