2013-08-23

Android. Работаем с AlertDialog. Часть 2. Экран приветствия

В прошлом уроке мы создавали простой AlertDialog. а в этом уроке я покажу как создавать экран приветствия с помощью диалога...



Нам нужно чтобы диалог запускался вместе с Activity, и чтобы следующий раз он не мешал пользователю по его решению не показывать, сделаем CheckBox с надписью Не показывать больше, ну что, приступим!

Для начала создадим новый проект, и в папке layout создадим checkbox.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal"
    android:padding="10dp" >
    <CheckBox
        android:id="@+id/skip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/dontshow" >
    </CheckBox>

</LinearLayout> 


и перейдем в res/values/strings.xml, откроем его и добавим эти строки:

 <string name="title">Осторожно!</string>
 <string name="message">Эти настройки предназначены только для разработчиков, если вы что-то здесь меняли просим не ссылать баг-репорты.</string>
 <string name="dontshow">Не показывать больше</string>


затем откройте MainActivity.java

И после public class MainActivity extends Activity implements OnClickListener { добавьте строки:

public static final String PREFS_NAME = "MyPrefsFile1";
public CheckBox dontShowAgain;


затем после setContentView(R.layout.main); пишете


  AlertDialog.Builder adb = new AlertDialog.Builder(this);
        LayoutInflater adbInflater = LayoutInflater.from(this);
        View eulaLayout = adbInflater.inflate(R.layout.checkbox, null);
        dontShowAgain = (CheckBox) eulaLayout.findViewById(R.id.skip);
        adb.setView(eulaLayout);
        adb.setTitle(getString(R.string.thanks));
        adb.setMessage(getString(R.string.message));
        adb.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                String checkBoxResult = "NOT checked";
                if (dontShowAgain.isChecked())
                    checkBoxResult = "checked";
                SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                SharedPreferences.Editor editor = settings.edit();
                editor.putString("skipMessage", checkBoxResult);
                editor.commit();

                Toast toast = Toast.makeText(getApplicationContext(), 
                "Вы нажали OK!", Toast.LENGTH_SHORT); 

                toast.show();
                return;
            }
        });

        adb.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                String checkBoxResult = "NOT checked";
                if (dontShowAgain.isChecked())
                    checkBoxResult = "checked";
                SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
                SharedPreferences.Editor editor = settings.edit();
                editor.putString("skipMessage", checkBoxResult);
                editor.commit();

                Toast toast = Toast.makeText(getApplicationContext(), 
                "Вы нажали Cancel!", Toast.LENGTH_SHORT); 
                toast.show();
                return;
            }
        });
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        String skipMessage = settings.getString("skipMessage", "NOT checked");
        if (!skipMessage.equals("checked"))
            adb.show();

        super.onResume();


код, думаю, всем понятен, зовем диалог, setTitle у нас свой заголовок, sеtMessage показываем сообщение, и кнопки OK и Cancel с условиями отметки CheckBox, и после editor.commit();  можем указать кнопке свое назначение, н-р у нас Toast, будет показывать что нажали.

Запустим и посмотрим что получилось:


После нажатия OK:



 Вот видите все достаточно просто, я к этому приложил еще и видео в котором вы увидите что после отметки чекбокса диалог не будет показываться:




Комментариев нет:

Отправить комментарий