web-dev-qa-db-ja.com

androidでモーダルダイアログボックスを作成する方法

アプリケーション用のモーダルダイアログボックスを作成したい。

モーダルダイアログボックスを開くと、他のアクティビティはブロックされます。戻るボタンを押す、ホームボタンを押すなどのイベントは行われません。

そのダイアログボックスに2つのオプションボタンをキャンセルしてOKをクリックします。

ありがとうございました...

15
Jatin Patel

Androidには多くの種類のDialogsがあります。 Dialogs をご覧ください。あなたが探しているのはAlertDialogのようなものだと思います。これは、BackPressボタンに実装する方法の例です。

@Override
public void onBackPressed() {
    AlertDialog.Builder alert = new AlertDialog.Builder(this);
    alert.setTitle("Do you want to logout?");
    // alert.setMessage("Message");

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            //Your action here
        }
    });

    alert.setNegativeButton("Cancel",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
            }
        });

    alert.show();

}
28
Ye Lin Aung

SetCancellable(false)を使用できます。 setCanceledOnTouchOutside(false);ダイアログ自体については、BACKによってダイアログの外側をタップすることにより、ダイアログが閉じるのを停止する必要があります。

[ホーム]ボタンをオーバーライドすることはできません。

9
IuriiO

これを試して::

ポップアップに表示するレイアウトを作成する必要があります。レイアウトXMLを作成し、次のように使用できます。

LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);  
            View layout = layoutInflater.inflate(R.layout.new_popup_layout, null);  
            final PopupWindow popupWindow = new PopupWindow(
                    layout, 
                       LayoutParams.WRAP_CONTENT,  
                             LayoutParams.WRAP_CONTENT);

次のようなボタンのクリックイベントを提供することもできます。

ImageButton btnChoose = (ImageButton) layout.findViewById(R.id.btnChoose);
            btnChoose.setOnClickListener(new OnClickListener()  {

                @Override
                public void onClick(View v) {
}
});

このポップアップを次のように表示します。ここでは、ボタンクリックでこれを表示したい場合、ボタンビューが表示されます。

 popupWindow.showAtLocation(anyview,Gravity.CENTER, 0, 0);
6
Armaan Stranger

以下のように試してください:

 AlertDialog.Builder builder = new AlertDialog.Builder(this);
 builder.setMessage("Are you sure you want to exit?")
  .setCancelable(false)
   .setPositiveButton(Android.R.string.yes, new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int id) {
        MyActivity.this.finish();
   }
 })
 .setNegativeButton(Android.R.string.no, new DialogInterface.OnClickListener() {
   public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
   }
});
AlertDialog alert = builder.create();

Home Keyイベントの場合:

いいえ、Androidでホームキーイベントを取得することはできません。ホームキーコードのドキュメントから: http://developer.Android.com/reference/Android/view/KeyEvent.html#KEYCODE_HOME

public static final int KEYCODE_HOME

キーコード定数:ホームキー。このキーはフレームワークによって処理され、はアプリケーションに配信されません

5
GrIsHu