پنجره Dialog در اندروید

جمعه 15 آبان 1394

در این مقاله قصد داریم در مورد اصول Dialog در اندروید صحبت کنیم و کاربرد و کارایی آن را بررسی نماییم. و یک مثال کاربردی بزنیم.

پنجره Dialog در اندروید

شاید تا به حال دیده باشید زمانی که یک اپلیکیشن اندروید را اجرا می کنید و بخواهید از آن خارج شوید و دکمه ی خروج از برنامه یک صفحه ی کوچک باز می شود و از شما می پرسد آیا قصد خروج دارید ؟ که دو پاسخ در اختیار شما می گذارد خیر یا بله و در بعضی از اپلیکیشن ها شما را به صفحه ی امتیاز دهی به برنامه هدایت می کند.

به این صفحه ی ایجاد شده ی کوچک dialog می گویند.

برای درک بیشتر موضوع تصویر زیر را مشاهده نمایید:

طراحی dialog

این dialog شامل دو دکمه ی مثبت و منفی و یک ناحیه ی محتوا و یک موضوع برای dialog است

موضوع ناحیه: به عنوان مثال کاربر دکمه ی خروج را زده باشد یک پیغام در بالا قرار می گیرد مثل خروج از برنامه  این همان موضوع ناحیه است.

ناحیه محتوا شامل اطلاعات کامل به کاربر است همان مثال خروج را در نظر بگیرید ، زمانی که کاربر دکمه را زد پیغام بدهد آیا قصد خروج از برنامه را دارید؟ به این قسمت ناحیه ی محتوا می گویند.

و در انتها دو دکمه که یکی خروج از برنامه و دیگری ادامه ی برنامه است که با زدن آن از برنامه خارج نمی شوید.

این پیغام ها و کلید های مثبت و منفی به برنامه ی خود شما بستگی دارد شاید در یک برنامه کلید مثبت یک معنای دیگر را بدهد.

Alert dialog:

این dialog اجازه ی این را می دهد تا کاربر تاریخ یا زمانی را انتخاب نمایند.

Dialog fragment class:

به جای استفاده از کلاس های مشخص شده ی قبلی ما باید از یک Dialog Fragment استفاده نماییم.

کلاس های قبل Property را نمایش و یا حفظ می کند

کلاس DialogFragment  برای تمام کنترل ها نیاز به ایجاد برای dialog  مدیریت آن است.

کلاس DialogFragment چرخه حیات برنامه را تحریف نمی کند یا کند نمی کند و یا خراب نمی کند.

درست کردن Dialog Fragment

ایجاد یک alert dialog و پاسخ به متد OnCreateDialog()

کد manifest به صورت زیر است.

<?xml version="1.0" encoding="utf-8"?>    
<manifest xmlns:android="http://schemas.android.com/apk/res/android"    
    package="com.example.alertdialog"    
    android:versionCode="1"    
    android:versionName="1.0" >    
    
    <uses-sdk    
        android:minSdkVersion="11"    
        android:targetSdkVersion="21" />    
    
    <application    
        android:allowBackup="true"    
        android:icon="@drawable/ic_launcher"    
        android:label="@string/app_name"    
        android:theme="@style/AppTheme" >    
        <activity    
            android:name="com.example.alertdialog.MainActivity"    
            android:label="@string/app_name" >    
            <intent-filter>    
                <action android:name="android.intent.action.MAIN" />    
    
                <category android:name="android.intent.category.LAUNCHER" />    
            </intent-filter>    
        </activity>    
    </application>    
    
</manifest> 

حالا باید کد xml را در activity مربوطه بنویسید:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent" >

    <EditText
            android:id="@+id/EditText01"
            android:text="مرجع تخصصی برنامه نویسان"
            android:layout_height="200dp"
            android:layout_width="200dp" android:layout_alignParentRight="true">

    </EditText>

    <Button
            android:id="@+id/Button01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="پاک کردن متن"
            android:layout_marginTop="64dp" android:layout_below="@+id/EditText01"
            android:layout_toLeftOf="@+id/EditText01">

    </Button>

</RelativeLayout>

در قسمت بعد کلاس جاوا را می نویسید:

import android.support.v7.app.ActionBarActivity;    
import android.support.v7.app.ActionBar;    
import android.support.v4.app.Fragment;    
import android.app.AlertDialog;    
import android.app.Dialog;    
import android.content.DialogInterface;    
import android.os.Bundle;    
import android.view.LayoutInflater;    
import android.view.Menu;    
import android.view.MenuItem;    
import android.view.View;    
import android.view.ViewGroup;    
import android.widget.Button;    
import android.widget.EditText;    
import android.widget.Toast;    
import android.os.Build;    
    
public class MainActivity extends ActionBarActivity   
{    
       Button Clear;    
       EditText edit_data;    
       //Called when the activity is first created    
       @Override    
       public void onCreate(Bundle savedInstanceState)   
       {    
             super.onCreate(savedInstanceState);    
             setContentView(R.layout.main);    
         
             Clear=(Button)findViewById(R.id.Button01);    
             edit_data=(EditText)findViewById(R.id.EditText01);    
         
             Clear.setOnClickListener(new View.OnClickListener()   
             {    
            
                   @Override    
                   public void onClick(View v)   
                   {    
                
                        AlertDialog.Builder builder=new AlertDialog.Builder(v.getContext());    
                        //Set a title    
                        builder.setTitle("Confirm");    
                        //Set a message    
                        builder.setMessage("Do you want to Clear?");    
                        ////Here Set a listener to be called when the positive button of the dialog is pressed.    
                        builder.setPositiveButton("OK",new DialogInterface.OnClickListener()  
                        {    
                 
                              @Override    
                               public void onClick(DialogInterface dialog, int which)  
                              {    
                           
                                      
                                    edit_data.setText("");    
                                    //Displaying a toast message    
                                    Toast.makeText(getApplicationContext(), "Your text has been cleared", Toast.LENGTH_LONG).show();    
                              }    
  
                         });    
                       
                         builder.setNegativeButton("Cancel",new DialogInterface.OnClickListener()   
                         {    
         
                              @Override    
                              public void onClick(DialogInterface dialog, int which)   
                              {    
                                     // TODO Auto-generated method stub    
                                     dialog.cancel();    
                              }    
                         });    
               
                         //Creating the dialog    
                         AlertDialog alertdialog=builder.create();    
         
                         //show the alertdialog    
                         alertdialog.show();    
         
                   }    
             });    
       }    
        
}    

حالا کد جاوا را بررسی می کنیم اول شروع به تعریف ابزار هایی که استفاده کردیم می پردازیم

برای دکمه ی Clear  یک رویداد نوشتیم ، که موضوع ناحیه و متن محتوا و دکمه ی مثبت ومنفی را که در این dialog استفاده کردیم می نویسیم

بعد Dialog را می سازید و آن را نمایش می دهید.

با زدن دکمه ی مثبت یک پیغام Toast به کاربر نشان خواهد داد.

اگر بخواهید یک لیستی را که شامل 3 انتخاب است بسازید باید از متد SenItems استفاده نمایید.

alertdialog ها 3 انتخاب می توانند داشته باشند

1-Checkbox

2-radiobutton

3-لیست های ساده

کد زیر به ما اجازه ی داشتن لیستی از 3 انتخاب را می دهد.


    @Override  
    public Dialog onCreateDialog(Bundle savedInstanceState) {  
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());  
        builder.setTitle(R.string.pick_color)  
               .setItems(R.array.colors_array, new DialogInterface.OnClickListener() {  
                   public void onClick(DialogInterface dialog, int which) {  
                   // The 'which' argument contains the index position  
                   // of the selected item  
               }  
        });  
        return builder.create();  

خروجی به صورت زیر خواهد بود:

زمانی که دکمه ی بله را بزنید متن مورد نظر پاک  می شود و یک پیغام به صورت Toast نمایش خواهد داد.

 

وقتی که دکمه ی خیر را بزنید متن پاک نخواهد شد و activity به کار خود ادامه خواهد داد.

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید