"Enter"a basıp içeriğe geçin

Android Studio Dialog Ekranı Oluşturma

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>
Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.