Android Tutorial VI: Alert Dialog

zeimusu-Warning-notification-300pxWitaj w VI wpisie naszego tutorialu, dzisiaj utworzymy dynamicznie prosty Alert Dialog przydatny przy różnego typu wyborach w naszych apkach.

Napisałem że nasz Alert Dialog będzie tworzony dynamicznie co to oznacza??

Oznacza to tyle, że do tworzenia naszego widoku nie będziemy używać XML (lecz możemy to zobić ale to w następnym wpisie) a wszystko zaimplementujemy w Javie.

Zaczynamy Alert Dialog:

Nasza aktywność będzie posiadała jeden przycisk i jedno pole TextView, które utworzymy za pomocą XML’a. Po naciśnięciu na przycisk, utworzymy nasz Alert Dialog z dwoma przyciskami, a po naciśnięciu na jeden z nich ustawimy odpowiedni komunikat w naszym TextView.

Nasz layout:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:paddingBottom="@dimen/activity_vertical_margin"
 android:paddingLeft="@dimen/activity_horizontal_margin"
 android:paddingRight="@dimen/activity_horizontal_margin"
 android:paddingTop="@dimen/activity_vertical_margin"
 tools:context="info.easymenu.MainActivity">

 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textAppearance="?android:attr/textAppearanceLarge"
 android:id="@+id/textView"
 android:layout_alignParentTop="true"
 android:layout_centerHorizontal="true" />

 <Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="start"
 android:id="@+id/button"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:layout_marginBottom="57dp"
 android:onClick="onClick"/>

</RelativeLayout>

Ok implementujemy:

  • deklarujemy tylko nasze pole TextView,
  • tworzymy jak zwykle metodę initVariables(), którą wywołujemy w naszej metodzie onCreate,
  • jak pewnie zauważyłeś nie deklarujemy naszego buttona, tym razem zrobimy to bardziej elegancko,
  • spójrz na metodę onClick(View view), to ona odpowiada za nasz button, w tej metodzie używamy switcha który po id podanym w naszym layoucie odnajduje button, musimy obsłużyć wyjątek i wywołujemy naszą kolejną metodę czyli setUpAlertDialog(TextView textView). Aby obsłużenie przycisku zadziałało prawidłowo w naszym XML layoutu w kontrolce Button musimy ustawić pole OnClick, a jako parametr nazwę metody którą obsługuje kliknięcie czyli w naszym przypadku OnClick,
  • najważniejsza metoda dzisiaj setUpAlertDialog(TextView textView) przyjmuje jako parametr nasze pole TextView którego tekst będziemy zmieniać,
  • na początek budujemy nasz alert dialog za pomocą obieku AlertDialog.Builder, tworzymy nowy obiekt alertDialogBuilder,
  • ustawiamy wiadomość jaką wyświetli nasz komunikat trzymamy ją w stringach:),
  • następnie ustawiamy pierwszy przycisk positiveButton, w pierwszym parametrze ustawiamy nazwę przycisku, a w drugim wywołujemy metodę onClick i ustawiamy co ma się dziać po kliknięciu, u nas zmieniamy nazwę naszego TextView.
  • analogicznie robimy w przypadku negative Button’a,
  • i na sam koniec Tworzymy właściwy obiekt klasy AlertDialog który zostaje stworzony z za pomocą alertDialogBuildera za pomocą metody create(),
  • i tak jak Toasty musimy jeszcze wyświetlić nasz komunikat za pomocą metody show();
package info.easymenu;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initVariables();

    }

    private void initVariables() {

        textView = (TextView) findViewById(R.id.textView);

    }

    private void setUpAlertDialog(final TextView textView){

        AlertDialog.Builder alertDialogbuilder = new AlertDialog.Builder(this);

        alertDialogbuilder.setMessage(R.string.message);

        alertDialogbuilder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                textView.setText(R.string.positiveButton);

            }
        });

        alertDialogbuilder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                textView.setText(R.string.negativeButton);

            }
        });

        AlertDialog alertDialog = alertDialogbuilder.create();

        alertDialog.show();


    }

    public void onClick(View view) {

        switch (view.getId()){

            case R.id.button:

                try {

                    setUpAlertDialog(textView);

                }catch (Exception e){
                    e.printStackTrace();
                }
        }
    }
}

alert

Dzisiaj nauczyliśmy się kolejnej przydatnej rzeczy w budowaniu naszych aplikacji, do tego zrobiliśmy to dynamicznie:)

Cześć.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *