آموزش برنامه نویسی اندروید فصل سوم
آموزش اندروید فصل سوم قسمت پانزدهم – زیر کلاس ListFragment
تیر ۲۰, ۱۳۹۵
آموزش برنامه نویسی اندروید فصل سوم
آموزش اندروید فصل سوم قسمت هفدهم – زیر کلاس PreferencesFragment
تیر ۲۲, ۱۳۹۵

آموزش اندروید فصل سوم قسمت شانزدهم – زیر کلاس DialogFragment

آموزش برنامه نویسی اندروید فصل سوم

آموزش برنامه نویسی اندروید فصل سوم

در قسمت سی و چهارم آموزش اندروید در ادامه آموزش زیر کلاس های کلاس فرگمنت ، زیر کلاس DialogFragment را آموزش داده ایم.

آموزش اندروید فصل سوم قسمت شانزدهم – زیر کلاس DialogFragment

توجه : برای مشاهده تصاویر در سایز اصلی برروی آنها کلیک کنید.

استفاده از DialogFragment

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

پروژه جدیدی به نام DialogFragmentPrj ایجاد کرده و کلاس جاوا جدیدی به نام Fragment1 ایجاد میکنیم و در آن چنین کدنویسی میکنیم که کدهای زیر شامل دو بخش است. بخش اول متد newInstance برای دریافت title از اکتیویتی اصلی و بخش دوم onCreateDialog برای تنظیم ویژگی های ظاهری و دکمه های پنجره دیالوگی ک نمایش داده میشود

package com.example.dialogfragmentprj;



import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.app.Dialog;

import android.app.DialogFragment;

import android.content.DialogInterface;

import android.os.Bundle;



public class Fragment1 extends DialogFragment {



        static Fragment1 newInstance(String title){

                 Fragment1 fragment = new Fragment1();

                 Bundle args = new Bundle();

                 args.putString("title", title);

                 fragment.setArguments(args);

                 return fragment;

        }



        @Override

        public Dialog onCreateDialog(Bundle savedInstanceState){

                 String title = getArguments().getString("title");

                 return new AlertDialog.Builder(getActivity()).setIcon(R.drawable.ic_launcher)

                                    .setTitle(title)

               .setPositiveButton("Ok", new DialogInterface.OnClickListener() {


                     public void onClick(DialogInterface dialo, int whichbutton) {


                                    ((MainActivity)getActivity()).doPositiveClick();

                                              }

                      }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {



                       @Override

                       public void onClick(DialogInterface dialog, int whichbutton) {


                              ((MainActivity)getActivity()).doNegativeClick();

                                              }

                                    }).create();

        }

}

سپس در فایل MainActivity.java نیز عبارت titile و عملیات مناسب برای دو متد ()doNegativeClick و ()doPositiveClick را تنظیم میکنیم(عملیات شامل نمایش پیغام مناسب با کلاس Toast خواهد بود)

package com.example.dialogfragmentprj;



import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

import android.widget.Toast;

public class MainActivity extends Activity {



        @Override

        protected void onCreate(Bundle savedInstanceState) {

                 super.onCreate(savedInstanceState);

                 setContentView(R.layout.activity_main);



                 Fragment1 dialogfragment = 
Fragment1.newInstance("Are you sure you want to do this??");

                 dialogfragment.show(getFragmentManager(), "dialog");

        }

        public void doPositiveClick(){

                 //--perform steps when user click ok--

                Toast.makeText(getActivity(), "You clicked Ok", Toast.LENGTH_SHORT).show();
;

        }

        public void doNegativeClick(){

                 //--perform steps when user click cancel--

                Toast.makeText(getActivity(), "You clicked Cancell", Toast.LENGTH_SHORT).show();

        }

}

سپس برنامه را اجرا کرده و نتیجه را به صورت زیر ببینید

آموزش کاربردی اندروید-قسمت سی و چهارم

روش کار

برای ایجاد یک فرگمنت دیالوگی ابتدا یک کلاس جاوا ایجاد کرده که کلاس DialogFragment را بسط میدهد

public class Fragment1 extends DialogFragment {

متد زیر با نام ()newInstance ابتدا شئی از نوع کلاس جاری خود ایجاد کرده و شئی نیز ازنوع Bundle . مقدار title که در اکتیویتی MainActivity اراسل میشود درون شی Bunlde قرار میگیرد(args) و سپس در این کلاس به خارج فرستاده میشود و هنگام ایجاد دیالوگ از آن استفاده میشود.

     static Fragment1 newInstance(String title){

                 Fragment1 fragment = new Fragment1();

                 Bundle args = new Bundle();

                 args.putString("title", title);

                 fragment.setArguments(args);

                 return fragment;

        }

سپس متد ()onCreateDialog را تعریف کرده ایم که بعد از متد ()onCreate و قبل از متد ()onCreateView فراخوانی میگردد

       @Override

        public Dialog onCreateDialog(Bundle savedInstanceState){

                 String title = getArguments().getString("title");

                 return new AlertDialog.Builder(getActivity()).setIcon(R.drawable.ic_launcher)

                                    .setTitle(title)

                      .setPositiveButton("Ok", new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialo, int whichbutton) {

                                           ((MainActivity)getActivity()).doPositiveClick();

                                    }

              }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {


                                              @Override

                    public void onClick(DialogInterface dialog, int whichbutton) {

              ((MainActivity)getActivity()).doNegativeClick();

                            }
                                 }).create();

        }

حال در MainActivity به صورت زیر یک شی از نوع کلاس Fragment1 ایجاد کرده و از این طریق به متد ()newInstance جهت تعیین عبارت title برای پنجره دیالوگ  دسترسی پیدا خواهیم کرد.

متد ()getFragmentManager نیز وظییفه ارتباط برقرار کردن با فرگمنت را برعهده دارد و از طریق دومتد Activity.getFragmentManager() و Fragment.getFragmentManager() بدست می آید

Fragment1 dialogfragment = Fragment1.newInstance("Are you sure you want to do this??");

                 dialogfragment.show(getFragmentManager(), "dialog");

همچنین در انتها دو متد ()doPositiveClick و ()doNegativeClick برای کنترل کلیک کاربر ایجاد میکنیم 

public void doPositiveClick(){

                 //--perform steps when user click ok--
 Toast.makeText(getActivity(), "You clicked Ok", Toast.LENGTH_SHORT).show();


        }

        public void doNegativeClick(){

                 //--perform steps when user click cancel--
 Toast.makeText(getActivity(), "You clicked Cancel", Toast.LENGTH_SHORT).show();

        }

مدرس : خانم مهندس داودی نژاد

آموزش اندروید فصل سوم قسمت پانزدهم

آموزش اندروید فصل سوم قسمت هفدهم

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *