نمایش یک Dialog Window
بسم الله الرحمن الرحیم
نمایش یک Dialog Window
فصل دوم- بخش چهارم
بسم الله الرحمن الرحیم
نمایش یک Dialog Window
فصل دوم- بخش چهارم
زمان های وجود دارد که شما نیاز دارید تا یک Dialog Windowنمایش دهید که کاربر اطلاعات خود ا وارد نماید.
در این موارد شما باید متد onCreateDialog()د راکه از نوع Protected می باشد, و توسط کلاس پایه Activity تعریف شده ا را override کنید.
داده های زیر را در فایل main.xml کپی کنید.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_dialog"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="Click to display a dialog" />
</LinearLayout>
وآنهای را در فایل java کپی کنید.
package com.Mehrdad.activity101;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.hardware.Camera.Area;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
String tag="LifeCycle" ;
CharSequence[] items = { "Google", "Apple", "Microsoft" };
boolean[] itemsChecked = new boolean [items.length];
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
public void onClick(View v) {
showDialog(0);
}
@Override
protected Dialog onCreateDialog(int id) {
switch(id)
{
case 0 :
return new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_delete)
.setTitle("En ghesamt Title Ra Vared Mikonid")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(),"Ok Ra Click Kardid",Toast.LENGTH_SHORT)
.show();
}
}
).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(),"Cancel Ra Click Kardid",Toast.LENGTH_SHORT)
.show();
}
} )
.setMultiChoiceItems(items,itemsChecked , new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1, boolean arg2) {
Toast.makeText(getBaseContext(),items[arg1] + " Ra Entekhab Kardid" ,Toast.LENGTH_SHORT)
.show();
}
})
.create();
}
return null;
}
}
برنامه با فشار دادن کلید F11اجرا کنید
سپس بر روی دکمه کلیک کنید تا Dialog به شما نمایش داده شود.
توضیحات
برای نمایش یک دیالوگ شما باید متدonCreateDialog() از کلاس Activity را override کنید
@Override
protected Dialog onCreateDialog(int id) {
/**…*/
}
این متد زمانی که متدshowDialog() را صدا می زنیم اجرا می شود.
public void onClick(View v) {
showDialog(0);
}
متد onCreateDialog() زمانی که اجرا می شود که متد showDialog() صدا بزنیم. که پارامار ورودی آن یک عدد integer می باشد که مشخص می کند که کدام دیالوگ باید نمایش داده شود. ما از دستور Switch
با توجه به پارامتری که به ُshowDialog()ارسال کردیم تعیین می کنیم که کدام Dialog بایدایجاد و نمایش داده شود.
برای ایجاد یک دیالوگ شما می توانید از سازنده کلاس Builder مربوط AlertDialog استفاده کنید.
شما می توانید انواع Property ها را از قبیل Icon,Titleو از همه مهتر checkboxes: تنظیم کنید.
protected Dialog onCreateDialog(int id) {
switch(id)
{
case 0 :
return new AlertDialog.Builder(this)
.setIcon(android.R.drawable.ic_delete)
.setTitle("En ghesamt Title Ra Vared Mikonid")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(),"Ok Ra Click Kardid",Toast.LENGTH_SHORT)
.show();
}
}
).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(),"Cancel Ra Click Kardid",Toast.LENGTH_SHORT)
.show();
}
} )
.setMultiChoiceItems(items,itemsChecked , new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1, boolean arg2) {
Toast.makeText(getBaseContext(),items[arg1] + " Ra Entekhab Kardid" ,Toast.LENGTH_SHORT)
.show();
}
})
.create();
}
return null;
}
return null;
}
در کدی که مشاهه می کنید شما دو Button تعیین کرده اید . با استفاده از متد های setPositiveButton() برا یOK و setNegativeButton() برای Cancel و همچنین شما با استفاه از متد setMultiChoiceItems() checkboxها را برای نمایش و انتخاب کاربر تعیین کرده اید شما دو آرایه به این متد ارسال کره اید یک آرایه برای نمایش و یک آرایه مقادیر(Value) آن آیتم ها. و تعیین کرده اید در صورتی که هرکدام از این ایتم ها تیک خورد متن آن بر روی صفحه نمایش داه شود شما برای این کار از کلاس Toast استفاه کره اید
شما می توانید کد بالا را به صورت زیر تغییر دهید
package com.Mehrdad.activity101;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.hardware.Camera.Area;
import android.view.View;
import android.view.Window;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
String tag="LifeCycle" ;
CharSequence[] items = { "Google", "Apple", "Microsoft" };
boolean[] itemsChecked = new boolean [items.length];
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
public void onClick(View v) {
showDialog(0);
}
@Override
protected Dialog onCreateDialog(int id) {
switch(id)
{
case 0 :
Builder dialog= new AlertDialog.Builder(this);
dialog.setIcon(android.R.drawable.ic_delete);
dialog.setTitle("En ghesamt Title Ra Vared Mikonid");
dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(),"Ok Ra Click Kardid",Toast.LENGTH_SHORT)
.show();
}
}
);
dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
Toast.makeText(getBaseContext(),"Cancel Ra Click Kardid",Toast.LENGTH_SHORT)
.show();
}
} );
dialog.setMultiChoiceItems(items,itemsChecked , new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1, boolean arg2) {
Toast.makeText(getBaseContext(),items[arg1] + " Ra Entekhab Kardid" + String.valueOf(arg2) ,Toast.LENGTH_SHORT)
.show();
}
});
return dialog.create();
}
return null;
}
}