Tasarıma iki tane button ekleyelim ve onClick tanımlayalım.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="horizontal"> <Button android:id="@+id/btn_dialog1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DIALOG 1" android:onClick="butonaDokunuldu" android:layout_weight="1"/> <Button android:id="@+id/btn_dialog2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DIALOG 2" android:onClick="butonaDokunuldu" android:layout_weight="1"/> </LinearLayout>
Dialog ekranı yazılarını string.xml içerisinde tanımlayalım.
<resources> <string name="app_name">Dialog Ekranı Oluşturma</string> <string name="dialog_1">Merhaba. Bu birinci dialog ekranı.</string> <string name="dialog_2">Merhaba!\nBu ikinci dialog ekranı.</string> </resources>
string.xml içerisine kaydettiğimiz yazıları yeni oluşturacağımız layoutlar içerisinde kullanacağız. İki dialog için iki tane layout oluşturalım. res -> layout (sağ tık) -> new -> Layout resource file -> adları dialog1 ve dialog2 olmak üzere oluşturalım. Her dialog ekranına TextView ekleyelim ve yukarıdaki yazıları kullanalım.
dialog1.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp"> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dialog_1" /> </LinearLayout>
dialog2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="vertical" android:padding="8dp"> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dialog_2" /> </LinearLayout>
Hangi dialoga tıklandığını belirlemek için sabitler tanımlayalım.
//Dialog ekranları için sabitler private static final int DIALOG_1 = 1; private static final int DIALOG_2 = 2;
Açılan dialog ekranlarının başlığını ve kullanacağı layoutu belirtelim. Bunun için onCreateDialog metodunu kullanacağız. id ile Button tıklanmasında bize gönderilen, yukarıda tanımladığımız DIALOG_1 & DIALOG_2 sabitlerinin id değerlerine bakacak.
@Override protected Dialog onCreateDialog(int id) { //Bir tane dialog tanımlayalım. Varsayılan değerini null tanımlayalım yoksa hata veriyor. Dialog dialog = null; //Tıklanan butonun id değerine göre koşullarla hangi dialog ekranının açılacağını seçelim. switch (id){ case DIALOG_1: break; case DIALOG_2: break; } return dialog; }
butonaDokunuldu metodunu oluşturalım ve butonları koşula tanımlayalım.
public void butonaDokunuldu(View view){ switch (view.getId()){ case R.id.btn_dialog1: break; case R.id.btn_dialog2: break; } }
caselerin içerisine showDialog ile hangi dialogun açılacağını belirtelim.
switch (view.getId()){ case R.id.btn_dialog1: showDialog(DIALOG_1); break; case R.id.btn_dialog2: showDialog(DIALOG_2); break; }
onCreateDialog içerisinde yeni bir dialog oluşturup, başlığını ve hangi layoutu kullanacağını belirtelim. onCreateDialog son durumu şöyle:
@Override protected Dialog onCreateDialog(int id) { //Bir tane dialog tanımlayalım. Varsayılan değerini null tanımlayalım yoksa hata veriyor. Dialog dialog = null; //Tıklanan butonun id değerine göre koşullarla hangi dialog ekranının açılacağını seçelim. switch (id){ case DIALOG_1: //dialog oluşturalım. dialog = new Dialog(this); //Başlığını belirtelim. dialog.setTitle("Dialog 1"); //Hangi layoutu kullanacağını belirtelim. dialog.setContentView(R.layout.dialog1); break; case DIALOG_2: dialog = new Dialog(this); dialog.setTitle("Dialog 2"); dialog.setContentView(R.layout.dialog2); break; } return dialog; }
MainActivity.Java
import android.app.Dialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivity { //Dialog ekranları için sabitler private static final int DIALOG_1 = 1; private static final int DIALOG_2 = 2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void butonaDokunuldu(View view){ switch (view.getId()){ case R.id.btn_dialog1: showDialog(DIALOG_1); break; case R.id.btn_dialog2: showDialog(DIALOG_2); break; } } @Override protected Dialog onCreateDialog(int id) { //Bir tane dialog tanımlayalım. Varsayılan değerini null tanımlayalım yoksa hata veriyor. Dialog dialog = null; //Tıklanan butonun id değerine göre koşullarla hangi dialog ekranının açılacağını seçelim. switch (id){ case DIALOG_1: //dialog oluşturalım. dialog = new Dialog(this); //Başlığını belirtelim. dialog.setTitle("Dialog 1"); //Hangi layoutu kullanacağını belirtelim. dialog.setContentView(R.layout.dialog1); break; case DIALOG_2: dialog = new Dialog(this); dialog.setTitle("Dialog 2"); dialog.setContentView(R.layout.dialog2); break; } return dialog; } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:orientation="horizontal"> <Button android:id="@+id/btn_dialog1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DIALOG 1" android:onClick="butonaDokunuldu" android:layout_weight="1"/> <Button android:id="@+id/btn_dialog2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DIALOG 2" android:onClick="butonaDokunuldu" android:layout_weight="1"/> </LinearLayout>
strings.xml
<resources> <string name="app_name">Dialog Ekranı Oluşturma</string> <string name="dialog_1">Merhaba. Bu birinci dialog ekranı.</string> <string name="dialog_2">Merhaba!\nBu ikinci dialog ekranı.</string> </resources>
dialog1.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp"> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dialog_1" /> </LinearLayout>
dialog2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="vertical" android:padding="8dp"> <TextView android:id="@+id/textView3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/dialog_2" /> </LinearLayout>