پنجره Dialog در اندروید
جمعه 15 آبان 1394در این مقاله قصد داریم در مورد اصول 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 به کار خود ادامه خواهد داد.
- Android
- 2k بازدید
- 0 تشکر