آموزش برنامه نویسی اندروید با اندروید استودیو (بخش سی و دوم: برنامه نویسی دکمه بازگشت BackButton در اندروید)

استاندارد

در این قسمت از آموزش برنامه نویسی اندروید، می خواهیم کمی با دکمه بازگشت در اپلیکیشن های اندروید کار کنیم.

قبل از این آموزش اگر با AlertDialog آشنایی ندارید حتما بخش بیستم از سری آموزش های اندروید استودیو را مشاهده کنید.

بعضی مواقع احتیاج داریم که کاربر هنگامی که می خواهد از برنامه خارج شود، با پیغام هشداری به وی، مطمئن شویم که آیا واقعا قصد خروج از اپلیکیشن را دارد یا خیر؟

این موضوع در برنامه های بسیاری از پلتفرم ها دیده می شود. بیشتر به این دلیل وجود دارد که ممکن است کاربر بر اثر اشتباه دستش به دکمه بازگشت خورده باشد.

پس بهتر است در برنامه ی اندرویدی خود، حتما در قسمت هایی که لازم است این ویژگی وجود داشته باشد.

من یک پروژه به نام BackButton-Gsm ایجاد می کنم.

حال سراغ فایل MainActivity.java می رویم.

در این قسمت قرار است کدهایی بنویسیم تا وقتی کاربر بر روی دکمه کلیک کند با استفاده از AlertDialog به وی هشدار داده شود که آیا واقعا قصد خروج از برنامه را دارد؟

سپس با توجه به تصمیم وی برای ماندن یا خروج که با استفاده از زدن کاربر بر روی دکمه … انجام می گیرد، در اپلیکیشن تصمیم مناسب اتخاذ می شود.

تابعی به نام onBackPressed در قسمت جاوای برنامه، نقش این را دارد تا هر وقت که بر روی دکمه بازگشت کلیک شد، کدهایی که داخل آن وجود دارد اجرا شوند.

پس در قدم اول، تابع onBackPressed را می نویسیم و خودمان تابع دیگری در دل آن نوشته تا رویدادهایی که می خواهیم را در آن تابع بنویسیم. ما از اسم backButtonEvent استفاده کرده ایم.

public void onBackPressed() {
// تابعی که خودمان نوشتیم تا در هنگام کلیک بر روی دکمه بازگشت این تابع فراخوانی شود
        backButtonEvent();
        return;
    }

در قسمت بعدی شروع به تعریف تابع backButtonEvent می کنیم.

در داخل این تابع، ابتدا کد AlertDialog را تعریف می کنیم و نام متغیر آن را hoshdar می گذاریم.

AlertDialog.Builder hoshdar = new AlertDialog.Builder(MainActivity.this);

سپس عنوان و نوشته ی این پیغام هشدار را تعریف می نماییم.

hoshdar.setTitle("هشدار");
hoshdar.setMessage("آیا قصد خروج از برنامه را دارید؟");

اگر از بخش AlertDialog به یاد داشته باشید هر هشداری یک حالت مثبت و منفی دارد که با زدن دکمه بله حالت مثبت فراخوانی شده و با زدن دکمه خیر حالت منفی فراخوانی می شود

خب ابتدا کد های حالت مثبت AlertDialog را می نویسیم:

hoshdar.setPositiveButton("بله",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // اتمام برنامه
                        finish();
                    }
                });

کدهای حالت منفی AlertDialog:

hoshdar.setNegativeButton("خیر",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        // کنسل کردن هشدار یا به عبارتی ماندن در برنامه
                        dialog.cancel();
                    }
                });

کد backButtonEvent

public void backButtonEvent() {
        AlertDialog.Builder hoshdar = new AlertDialog.Builder(MainActivity.this);

        hoshdar.setTitle("هشدار");
        hoshdar.setMessage("آیا قصد خروج از برنامه را دارید؟");

        hoshdar.setPositiveButton("بله",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                    }
                });

        hoshdar.setNegativeButton("خیر",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        hoshdar.show();
    }

یادتان باشد که در آخر با استفاده از کد زیر، به اپلیکیشین می گویید که دیالوگ شما را نشان دهد. در واقع برای فراخوانی و نشان داده شدن AlertDialog در انتها کد dialog.show را نوشته تا پس از اجرای کدهای قبلی و پیکربندی AlertDialog، دیالوگ آن به کاربر نمایش داده شود.

برای راحتی کار شما، کد کامل MainActivity.java نیز در اینجا آورده شده است.

کد کامل MainActivity

package com.gsm_developers.backbutton_gsm;

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onBackPressed() {
        backButtonEvent();
        return;
    }

    public void backButtonEvent() {
        AlertDialog.Builder hoshdar = new AlertDialog.Builder(MainActivity.this);

        hoshdar.setTitle("هشدار");
        hoshdar.setMessage("آیا قصد خروج از برنامه را دارید؟");

        hoshdar.setPositiveButton("بله",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                    }
                });

        hoshdar.setNegativeButton("خیر",new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        hoshdar.show();
    }
}

پس از اجرای برنامه مشاهده می کنید که با زدن دکمه بازگشت، پیغام زیر نشان داده می شود که در صورت زدن “بله” از برنامه خارج می شوید.

تیره شدن اطراف هرچیزی که پیرامون پیغام هشدار است، جنبه روانشناسی دارد تا کاربر به پیغام توجه بیشتری داشته باشد. پس استفاده از AlertDialog در اپلیکیشن های خود، مزیت های خوبی دارد.

آموزش برنامه نویسی اندروید با اندروید استودیو (بخش بیستم و یکم: کار با AlertDialog در اندروید [قسمت دوم] )

استاندارد

در این بخش از آموزش، می خواهیم قسمت دوم کار با Alert Dialog را به شما آموزش دهیم.

دیدیم که در قسمت اول این آموزش، با زدن دکمه Button دیالوگ هشداری به ما نشان داده می شد.

در این بخش به دیالوگی که ساخته بودیم، دو دکمه اضافه می کنیم و برای هر دکمه یک رویداد معرفی می کنیم.

ما پروژه قبلی AlertDialog را باز می کنیم تا ادامه کار را بر روی آن انجام دهیم.

در ابتدا وارد قسمت کدنویسی جاوا یعنی MainActivity می شویم.

کاری که می خواهیم انجام دهیم اینست که دو دکمه به دیالوگ قبلی معرفی کنیم. برای این کار از دو دستور setPositiveButton و setNegativeButton استفاده می کنیم.

اگر عملی که در دیالوگ می خواهیم انجام دهیم مثبت باشد (Yes) از setPositiveButton استفاده می کنیم و اگر آن عمل یا رویداد منفی باشد (No)، از setNegativeButton استفاده خواهیم کرد.

بعد از این که دستور setPositiveButton را نوشتیم، یک مقدار Text برای نمایش از ما می خواهد.

همچنین یک Listener برای این که در هنگام زدن دکمه عملی یا رویدادی را انجام دهد نیز باید نوشته شود.

اگر آموزش قبلی ما را دیده اید و بر اساس آن جلو می روید، دو تابع setPositiveButton و setNegativeButton را قبل از ()dialog.show اضافه نمایید. کد این دو تابع در زیر آورده شده است.

 

dialog.setPositiveButton("بلی", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,"خارج شدید", Toast.LENGTH_LONG).show();

                    }
                });

dialog.setNegativeButton("خیر", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        Toast.makeText(MainActivity.this,"باتشکر", Toast.LENGTH_LONG).show();

                    }
                });

قدم به قدم

ولی اگر این آموزش را بار اول است که اجرا می کنید، در ابتدا یک دکمه با ایدی Button ایجاد نمایید.

سپس با استفاده از کد زیر، دکمه Button را با استفاده از آیدی به قسمت MainActivity معرفی کنید. (این عملیات در رویداد onCreate نوشته شود)

final Button button1 =  (Button)findViewById(R.id.button);

برای نوشتن کلاس AlertDialog نیز، کد زیر را معرفی کنید تا در هنگام زدن دکمه، AlertDialog پیکربندی شده و اجزای آن معرفی شود.

button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                dialog.setTitle("Gsm Developers");
                dialog.setMessage("آیا می خواهید ادامه دهید؟");

 

سپس در ادامه عملیات دو تابع setPositiveButton و setNegativeButton را می نویسیم:

dialog.setPositiveButton("بلی", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,"بسیار خوب است", Toast.LENGTH_LONG).show();

                    }
                });

                dialog.setNegativeButton("خیر", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        Toast.makeText(MainActivity.this,"با تشکر از شما", Toast.LENGTH_LONG).show();

                    }
                });

در آخر نیز با استفاده از کد ()dialog.show به AlertDialog می گوییم که ظاهر شود!

dialog.show();

کد کلی به صورت زیر است:

 

import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button button1 =  (Button)findViewById(R.id.button);

        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
                dialog.setTitle("Gsm Developers");
                dialog.setMessage("آیا می خواهید ادامه دهید؟");

                dialog.setPositiveButton("بلی", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,"بسیار خوب است", Toast.LENGTH_LONG).show();

                    }
                });

                dialog.setNegativeButton("خیر", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                        Toast.makeText(MainActivity.this,"با تشکر از شما", Toast.LENGTH_LONG).show();

                    }
                });
                dialog.show();

            }
        });
    }
}

اگر کد را اجرا نمایید خروجی شما به صورت زیر خواهد بود.

android-studio-beginners-gsm-developers_66