نمایش یک پیام در یک پنجره جدید، به همراه دو گزینه قابل انتخاب برای کاربر، با استفاده از AlertDialog ، در برنامه نویسی اندروید
در این مبحث قصد داریم که از AlertDialog برای نمایش یک پیام به همراه دو گزینه قابل انتخاب برای کاربر، استفاده کنیم.
ابتدا در برنامه اندروید، یک دکمه (Button) با عنوان ((نمایش پیام)) نمایش داده می شود :
اگر کاربر بر روی دکمه (Button) اشاره کند، پنجره ای به شکل زیر باز می شود :
با اشاره بر روی گزینه ((بله))، پنجره بسته می شود و پیامی کوتاه با عنوان YES نمایش داده می شود و همچنین چنانچه کاربر بر روی گزینه ((خیر)) اشاره کند، پنجره بسته می شود و پیامی کوتاه با عنوان NO نمایش داده می شود :
شما در صورت دلخواه، می توانید دستورهای مورد نظرتان برای هر یک از این دو گزینه را تعیین کنید.
در انتهای این مبحث، فایل های پروژه اندروید برای دانلود قرار داده شده اند و در ادامه، بخش های مهم پروژه اندروید را شرح می دهیم.
در برنامه eclipse ، ابتدا یک پروژه اندروید با نام AlertDialog می سازیم (نام package را برابر com.kelidestan.alertdialog انتخاب می کنیم. نام Activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم برابر activity_main قرار می دهیم).
رشته های (string) مورد نظرمان را در فایل strings.xml تعریف می کنیم :
کدهای فایل strings.xml را به صورت زیر می نویسیم :
<resources>
<string name="app_name">AlertDialog</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="title">عنوان</string>
<string name="message">پیامی که می خواهید نمایش داده شود</string>
<string name="yes">بله</string>
<string name="no">خیر</string>
<string name="button">نمایش پیام</string>
</resources>
فایل activity_main.xml ، فایل xml متناظر برای Activity برنامه است (برنامه اندروید تنها یک Activity دارد) :
کدهای فایل activity_main.xml را به صورت زیر می نویسیم :
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/button" />
</LinearLayout>
همان طور که مشاهده می کنید، تنها یک دکمه (Button) را تعریف کرده ایم. ظاهر گرافیکی activity_main.xml ، به صورت زیر می باشد :
اکنون به سراغ فایل MainActivity.java می رویم (فایل مربوط به تنها Activity برنامه اندروید) :
کدهای فایل MainActivity.java را به صورت زیر می نویسیم :
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button1);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShowAlertDialog();
}
});
}
public void ShowAlertDialog() {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
alertDialog.setTitle(R.string.title);
alertDialog.setMessage(R.string.message);
alertDialog.setIcon(R.drawable.ic_launcher);
// Setting Positive "Yes" Button
alertDialog.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_SHORT).show();
}
});
// Setting Negative "NO" Button
alertDialog.setNegativeButton(R.string.no,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to invoke NO event
dialog.cancel();
Toast.makeText(getApplicationContext(), "NO", Toast.LENGTH_SHORT).show();
}
});
// Showing Alert Message
alertDialog.show();
}
}
در ادامه، بخش های مهم کدها را شرح می دهیم.
تابعی با نام ShowAlertDialog ساخته ایم که برای نمایش AlertDialog به کار می رود و کدهای مربوط به دکمه (Button) را به گونه ای نوشته ایم که با اشاره کاربر بر روی دکمه، کدهای تابع ShowAlertDialog اجرا شود :
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ShowAlertDialog();
}
});
اکنون، در ادامه، کدهای تابع ShowAlertDialog را شرح می دهیم.
با کد زیر، یک AlertDialog با نام alertDialog ساخته ایم :
سپس با روش setTitle ، عنوانی برای AlertDialog تعیین کرده ایم :
با کد زیر، پیامی که در AlertDialog نمایش داده می شود را تعیین کرده ایم :
با کد زیر، یک آیکون (icon) برای AlertDialog نعیین کرده ایم (عکس خود برنامه اندروید را به عنوان آیکون در نظر گرفته ایم) :
با کد زیر، یک دکمه به AlertDialog افزوده ایم (یک دکمه از نوع Positive) و کدهایی را هم برای اجرا شدن در هنگام اشاره به آن، تعیین کرده ایم :
alertDialog.setPositiveButton(R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Toast.makeText(getApplicationContext(), "YES", Toast.LENGTH_SHORT).show();
}
});
دقت شود که خط زیر از کدها، باعث بسته شدن پنجره مروبط به AlertDialog می شود :
همچنین از روش Toast برای نمایش یک پیام با مدت زمان کوتاه، استفاده کرده ایم.
با کد زیر، یک دکمه به AlertDialog افزوده ایم (یک دکمه از نوع Negative) و کدهایی را هم برای اجرا شدن در هنگام اشاره به آن، تعیین کرده ایم :
alertDialog.setNegativeButton(R.string.no,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Write your code here to invoke NO event
dialog.cancel();
Toast.makeText(getApplicationContext(), "NO", Toast.LENGTH_SHORT).show();
}
});
در آخر، با کد زیر، AlertDialog ای که طراحی کرده ایم را به کاربر نمایش می دهیم :
alertDialog.show();
فایل های پروژه اندروید را می توانید از لینک های زیر دانلود کنید :