آموزش اعمال استایل بر روی اکتیویتی در اندروید ، نمایش پنجره دیالوگ در اندروید ، در قسمت یازدهم آموزش برنامه نویسی اندروید در ادامه مبحث اکتیویتی ها اقدام به اعمال استایل یا تم بر روی اکتیویتی ها کرده ایم همچنین امکانات دیگر را مانند پنهان کردن عنوان اکتیویتی را آموزش داده ایم در ادامه نیز پنجره دیالوگ را که برای تعامل با کاربر می باشد را با مثالی شرح داده ایم.
توجه : برای مشاهده تصاویر در سایز اصلی بر روی آنها کلیک کنید.
به صورت پیش فرض یک اکتیویت تمام تصویر را اشغال میکند. اما ما میتوانیم یک پنجره Dialog را به اکتیویتی داده تا به صورت شناور نمایش داده شود.این روش بیشتر زمانی کاربرد دارد که بخواهیم یک پیغام هشدار را به کار به کاربر نمایش دهیم چون همیشه نمایش اکتیویتی به صورت دیالوگ توجه کاربر را جلب میکند.
برای اعمال تم دیالوگ تنها کافی است قسمت android:theme عنصر <Activity> موجود در فایل manifest برنامه به صورت زیر تغییر دهیم
<activity
android:name=".Factivityy"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
پس از اعمال تغییرات پروژه را اجرا کنید تا نتیجه مشابه تصویر زیر را مشاهده فرمایید
اگر تنها نمایش پیغام اکتیویتی (یا پیام هشدار) برای شما مهم است میتوانید برای زیبایی کار هم عنوان اکتیویتی را پنهان کنید برای این کار نیز تنها کافی است از متد ()requestWindowFeature استفاده کرده و عبارت Window.FEATURE_NO_TITLE مانند زیر به آن ارسال کنید
import android.view.Window;
public class Factivityy extends Activity {
String tag="LifeCycle";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
}
قسمت های پررنگ شده را به کدهای خود اضافه کنید و برنامه را اجرا کنید و دیالوگ بدون عنوان را به صورت زیر مشاهده خواهید کرد
مواقعی نیاز است که یک پنجره دیالوگ به کاربر نمایش دهیم مثلا زمانی که برای انجام کاری نیاز به تایید کاربر داریم.در این مورد میتوان از متد onCreatedDialog() که در کلاس پایه اکتیویتی است استفاده کنید.
مثال زیر نحوه انجام این کار را مشخص میکند.پروژه جدید ایجاد کرده کدهای زیر را به قسمت main.xml اضافه کنید
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="150dp"
android:onClick="onClick"
android:text="click to display a dialog" />
همانگونه که کد های فوق را مشاهده میکنید همگی مشخصه های Button ایجاد شده میباشد که هم از طریق کدنویسی و هم از طریق گرافیکی میتوان دکمه یا Button را ایجاد کرد. مشخصه مهم Button رویداد onClick میباشد که بدین صورت مشخص شده android:onClick=”onClick”
حال در Activity پروژه بدین صورت کدنویسی میکنیم
package com.example.dialog;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.view.View;
import android.widget.Toast;
import android.os.Bundle;
public class DialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
}
public void onClick(View V)
{
showDialog(0);
}
@Override
protected Dialog onCreateDialog(int id)
{
switch (id)
{
case 0:
Builder b=new AlertDialog.Builder(this);
b.setIcon(R.drawable.ic_launcher);
b.setTitle("This is Dialog with some Option...");
b.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int wichButton) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Ok Clicked", Toast.LENGTH_SHORT).show();
}
});
b.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int wichButton) {
// TODO Auto-generated method stub
Toast.makeText(getBaseContext(), "Cancel Clicked", Toast.LENGTH_SHORT).show();
}
});
b.setMessage("Click Ok or Cancell");
return b.create();
}
return null;
}
}
برای نمایش یک دیالوگ ابتدا باید متد ()onCreateDialog را در کلاس Activity پیاده کنید:
@override
Protected Dialog onCreateDialog(int id){
//…
}
این متد زمانی فرراخوانی میگردد که شما متد ()showDialog را فراخوانی کنید:
Public void onClick(View v){
showDialog(0);
}
متد ()onCreateDialog یک callback برای ایجاد دیالوگ های مدیریت شده به وسیله اکتیویتی است. به محض فراخوانی متد ()showDialog این callback نیز فراخوانی میگردد. متد ()showDialog یک آرگومان از نوع integer قبول میکند که مشخص کننده یک دیالوگ خاص جهت نمایش است. ما از یک switch براش مشخص کردن انواع مختلف دیالوگ جهت ایجاد استفاده کرده ایم اما در این مثال تنها یک نوع دیالوگ استفاده شده که در ادامه انواع دیگری را اضافه خواهیم کرد.
برای ایجاد یک دیالوگ از سازنده کلاس AlertDialog استفاده میکنیم و همچنین باید خصوصیات مختلفی از جمله آیکن ، عنوان ، دکمه ها و البته چک باکس هارا تعیین کنیم. که اگر به دستورات دقت کنیم دو دکمه Ok و Cancel را با متدهای ()setPosetiveButton و ()setNegativeButton تنظیم کرده ایم همچنین با استفاده از متد ()setMessage که پیغامی را درون دیالوگ قرار میدهد و هرگاه یکی از دکمه های Ok یا Cancell کلیک شود از کلاس Toast برای نشان دادن یک پیام استفاده میشود که نشان دهنده گزینه گزینه انتخاب شده میباشد.
کلاس Toast که از آن برای نمایش یک پیغام به کاربر استفاده میشود چنین ساختاری دارد
Toast.makeText(context, text, duration)
پارامتر اول که context نامیده میشود درواقع بستری از اپلیکیشن میباشد و به تمامی ویژگی های اپلیکیشن اشاره دارد مثلا اندازه صفحه موبایل و اکتیویتی فعال و لایه نمایشی فعال و … محتوی context مقداری از نوع context است اما ما میتوانیم این مقدار را MainActivity.this نیز قرار دهیم با این که این مقدار از نوع اکتیویتی است اما هر اکتیویتی در انتها از کلاس پایه context(در ادامه context را آموزش خواهیم داد) انشعاب گرفته شده.
حال برنامه خود را اجرا کرده و نتیجه را ببینید