0

次のコードがあります。テキストビューといくつかのボタンを含むダイアログが表示されます。ボタンを押すと、ダイアログが閉じます。しかし、閉じません。バグがありますか? 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();

        }
    });

}
4

2 に答える 2

2

あなたが表示しているようです、あなたが保持していない参照を新しく作成したダイアログ

alert.setView(ldialog);
alert.show();

そして、参照がそれとは異なるダイアログを閉じようとしています:

 dialog.dismiss();
 dialog.cancel();

ダイアログから最後の行を削除し、最後の行 " alert.show();" を次のように変更します。

    dialog = alert.create();
    dialog.show();

そして今、あなたはそのダイアログの参照を持っていて、それはうまくいくでしょう....

于 2013-06-28T17:32:17.500 に答える
0

dialog.finsh();やってみるdialog.dismiss();

またはこの onClick :

if (dialog != null && dialog.isShowing()) {
        dialog.dismiss();
于 2013-06-28T17:46:41.360 に答える