dialog.dismiss将无法正常工作。

时间:2013-06-28 17:23:52

标签: android

我有以下代码。它显示了一个带有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();

        }
    });

}

2 个答案:

答案 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();