Strona 1 z 1

[Android][Java] Niejasna zasada działania metody z AlertDialog.Buider

: 18 paź 2012, 12:13
autor: soulreaver1
Więc mam pewną metodę aalert(). Kompletnie nie rozumiem co się dzieje przy wywołaniu alert.setPositiveButton. Mógłby mi ktoś to wyjaśnić, krok po kroku?

Kod: Zaznacz cały

    public void aalert() {
        AlertDialog.Builder alert = new AlertDialog.Builder(DisplayMessageActivity.this);
        
        alert.setTitle("Are u ok?");
        alert.setMessage("?");
        alert.setPositiveButton("Tak",
         new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int id) {
           Toast.makeText(DisplayMessageActivity.this, "Success", Toast.LENGTH_SHORT).show();
          }
         });

        alert.show();
    }
Do tej pory byłem przekonany że w javie nie tworzy się instancji interfejsów.

Re: [Android][Java] Niejasna zasada działania metody z AlertDialog.Buider

: 18 paź 2012, 12:22
autor: Knypolek

Kod: Zaznacz cały

http://developer.android.com/reference/android/app/AlertDialog.Builder.html#setPositiveButton(int, android.content.DialogInterface.OnClickListener)
Z tego co ja zakumałem, to po naciśnięciu na stworzony button (PositiveButton) uaktywnia się listener, który wyświetla "Success".

Re: [Android][Java] Niejasna zasada działania metody z AlertDialog.Buider

: 18 paź 2012, 12:57
autor: soulreaver1
Nie chodzi mi o to jaki jest efekt, tylko w jaki sposób wywoływana jest metoda alert.setPositiveButton().

Re: [Android][Java] Niejasna zasada działania metody z AlertDialog.Buider

: 20 paź 2012, 18:35
autor: Paminol

Re: [Android][Java] Niejasna zasada działania metody z AlertDialog.Buider

: 22 paź 2012, 16:11
autor: Yuri20
W Javie nigdy nie tworzyło się obiektów interfejsów i ta zasada nadal obowiązuje. Za pomocą interfejsów można natomiast tworzyć referencje do obiektów, których klasy ten interfejs implementują. Dla przykładu String implementuje interfejs CharSequence, dlatego możliwa jest następująca konstrukcja:

CharSequence cs = new String("Ciąg znaków");

To co się dzieję w tej magicznej metodzie setPositiveButton to po prostu stworzenie obiektu klasy anonimowej rozszerzającej interfejs onClickListener. Konstrukcja jest mniej więcej taka:
new <klasa bądź interfejs do rozszerzenia>(){ .... ciało klasy .... };

Jeśli tworzona jest klasa anonimowa na podstawie interfejsu to konieczne jest zaimplementowanie metod abstrakcyjnych. Jak widać w przypadku OnClickListener trzeba zaimplementować metodę onClick.

Poczytaj sobie więcej klasach anonimowych.

Re: [Android][Java] Niejasna zasada działania metody z AlertDialog.Buider

: 22 paź 2012, 16:23
autor: soulreaver1
Yuri20 pisze: To co się dzieję w tej magicznej metodzie setPositiveButton to po prostu stworzenie obiektu klasy anonimowej rozszerzającej interfejs onClickListener. Konstrukcja jest mniej więcej taka:
new <klasa bądź interfejs do rozszerzenia>(){ .... ciało klasy .... };

Jeśli tworzona jest klasa anonimowa na podstawie interfejsu to konieczne jest zaimplementowanie metod abstrakcyjnych. Jak widać w przypadku OnClickListener trzeba zaimplementować metodę onClick.

Poczytaj sobie więcej klasach anonimowych.


Dziękuje, właśnie na taką odpowiedź czekałem. Temat zamknięty.