2013-08-22 20 views
14

Chcę utworzyć modalne okno dialogowe dla mojej aplikacji.Jak utworzyć modalne okno dialogowe w Androidzie

, więc gdy modalne okno dialogowe jest otwarte, inne czynności są blokowane. żadne zdarzenie nie jest wykonywane, jak naciśnięcie przycisku Wstecz lub naciśnięcie przycisku głównego.

i naciśnij dwa przyciski opcji w tym oknie dialogowym anuluj i dobrze.

Dziękuję ...

+1

Czy możesz pokazać swój kod, który próbujesz? –

+0

moje pytanie jest poprawne, więc co głos negatywny dał mi. –

+0

Nie padłem! Poprosiłem tylko o kod. –

Odpowiedz

26

Istnieje wiele rodzajów Dialogs w Androidzie. Proszę spojrzeć na Dialogs. Domyślam się, że szukasz czegoś takiego jak AlertDialog. Oto przykład, w jaki sposób można wdrożyć na przycisku 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

dzięki za kod, ale w jaki sposób będę realizować na klawiaturze domowej naciśnij. –

+0

Dlaczego chcesz zaimplementować go na klawiaturze 'HOME'? Niektóre linki do twojego ref. http: // stackoverflow.com/questions/4783960/call-method-when-home-button-press-on-android i http://stackoverflow.com/questions/2079691/overriding-the-home-button-how-do-i-get- na uboczu z wyboru –

+0

Na szczęście nie można obsłużyć naciśnięcia klawisza "HOME". Pozwoliłoby to aplikacjom robić brzydkie rzeczy. –

5

Spróbuj ::

Musisz stworzyć układ, który chcesz pokazać w miniaturze. można utworzyć układ XML i używać go tak:

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

Można także kliknąć zdarzenia przycisku jak to:

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

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

i pokazać okienko tak: tu chcesz pokazać to na kliknij przycisk, a następnie wyświetli się widok przycisku.

popupWindow.showAtLocation(anyview,Gravity.CENTER, 0, 0); 
9

Użyj można użyć setCancellable (false); setCanceledOnTouchOutside (false); dla samego okna dialogowego, które powinno zatrzymać to okno dialogowe przed zamknięciem przez WSTECZ i dotykając poza tym oknem dialogowym.

Nie można przesłonić przycisku HOME.

+1

W rzeczywistości można zastąpić przycisk strony głównej ..., określając aplikację jako "Launcher". – Wildcopper

5

Wypróbuj jak poniżej:

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

na klucz wydarzenia Home:

Nie, to nie jest możliwe, aby uzyskać Kluczowym wydarzeniem Home Android. Z dokumentacji kodu klawisza Home: http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME

public static final int KEYCODE_HOME

kod Key stała: klucz główny. Ten klucz jest obsługiwany przez framework i nigdy nie jest dostarczany do aplikacji.

+0

Krótka notka: możesz nie chcieć kodować ciągów "Tak" i "Nie". Zamiast tego możesz użyć statycznych zasobów, takich jak android.R.string.yes i android.R.string.no. –

Powiązane problemy