0

ボタンが存在するAlertDialog.Builder内部があり、クリックするとダイアログを閉じたいです。

.dismiss()しかし、または.cancel()メソッドはありません。

    LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View layout = inf.inflate(R.layout.map_window, null);

    window = new AlertDialog.Builder(activity);
    window.setCancelable(true);

    buttonStar = (ImageButton)layout.findViewById(R.id.buttonStar);
    buttonStar.setBackgroundResource(R.drawable.star);
    buttonStar.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View arg0) {
        //finishing window;
    }
      });


    window.setPositiveButton("Volver", new DialogInterface.OnClickListener() {  
        public void onClick(DialogInterface dialog, int wichButton) {  

        }  
    });  

    window.show();

}
4

3 に答える 3

4

AlertDialog.Builder#show自身を返すAlertDialogので、そこから戻るAlertDialog自体を取得し、それに対してshowdismissを呼び出します。

AlertDialog dialog;
//...

dialog = window.show();
于 2012-05-16T09:56:49.353 に答える
2

ダイアログオブジェクトからキャンセルしてみてください。次のようにダイアログ オブジェクトを作成します。

Dialog dialog = window.create();
dialog.cancel()
于 2012-05-16T09:58:43.227 に答える
0

AlertDialogの次のコードを見つけます。onClick()の代わりに新しいDialogInterface.OnClickListener()を使用します。

    AlertDialog ad = new AlertDialog.Builder(MainCatalogueActivity.this)

                    .setTitle("Server Response Error")

                    .setMessage("some message ")

                    .setIcon(R.drawable.ic_menu_close_clear_cancel)

                    .setNegativeButton("Close", new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            Intent intent = new Intent(Intent.ACTION_MAIN);

                            intent.addCategory(Intent.CATEGORY_HOME);

                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                            startActivity(intent);

                            finish();


                        }
                    }).create();
    ad.show();
于 2012-05-16T10:18:21.050 に答える