2013-08-22 18 views
14

私のアプリケーションのモーダルダイアログボックスを作成します。アンドロイドでモーダルダイアログボックスを作成するには

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

このダイアログボックスに2つのオプションボタンを入れてキャンセルしてもOKです。

は、AndroidでDialogsの多くの種類がありますが...

+1

試したコードを表示できますか? –

+0

私の質問は正しいので、否定投票は私に与えました。 –

+0

私はdownvoteしなかった!ちょうどコードを求められました。 –

答えて

26

、ありがとうございました。 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(); 

} 
+0

私はホームキープレスでどのように実装するのですか? –

+0

なぜあなたは 'HOME'キーでそれを実装しますか?あなたの参照のためのいくつかのリンク。 http:// stackoverflow。com/questions/4783960/call-method-home-button-on-android&http://stackoverflow.com/questions/2079691/overriding-the-home-button-how-do-i-get-嫌いです –

+0

幸運なことに、 'HOME'キーを押すことはできません。それはアプリケーションがいくつかの醜いことをすることができます。 –

5

これを試してみてください::

あなたがポップアップで表示したいレイアウトを作成する必要があります。あなたはレイアウト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); 
9

使用可能 setCancellable(false); setCanceledOnTouchOutside(false); ダイアログでは、そのダイアログがBACKで閉じるのを止めて、ダイアログの外をタップすることで停止する必要があります。

[ホーム]ボタンを上書きすることはできません。

+1

実際、アプリケーションを「ランチャー」にすることで、ホームボタンを無効にすることができます。 – Wildcopper

5

次のように試してみてください:ホームキーイベントについては

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

を:

いいえ、アンドロイドでホームキーイベントを取得することはできません。 http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME

のpublic static final int型KEYCODE_HOME

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

+0

「はい」と「いいえ」の文字列をハードコードしたくない場合があります。代わりに、android.R.string.yesやandroid.R.string.noのような静的リソースを使用できます。 –

関連する問題