วิธีการยืนยันการออกจากapp anddroid

android-exit

 เนื่องจาก  ได้มีโอกาสเขียน app เล็กๆ  ก็เลยผ่านไปเจอวิธีการทำ  ปิด   anddroid  ซึ่อันที่จริงก็ไปถาม  อาจารย์หลายๆ ท่านมาอีกที  ก็เลยเอามาเขียนแบบ  ง่ายๆ  สไลต์  บ้านๆเผื่อบางคนกำลังจะหลงทางว่า  เขียน code  เช่นไร

โดยการเขียนแบบ  ง่ายๆๆ   นะครับ  คือการ

finish();

System.exit(0);

ดูตามวิดิโอ  ความยาว  9 นาที

หรือถ้าตัวอย่าง code  button  close  ไปลอง import ดูนะครับ  >> ดาวโหลด

ส่วนนั้น จะมี dialog  มาด้วยคือ  กด  yes /  no   ภาพนี้ที่เคยเห็นก็ประมาณนี้  เดี๋ยวกจะเทพขึ้นคือ  ถ้ากดปุ่ม  back บนมือถือก็จะ   ยืนยันการออกจากระบบ

ซึ่งอันที่จริงก็ไม่จำเป็น  เท่าไหร่นัก  เพราะบนมือถือจะมี   ความเข้าใจ  ว่าเมื่อเรากด  home  จะออกจากระบบ   หรือ  back  จะ หยุด   ประมาณนี้

device-2013-11-24-010112

device-2013-11-24-010328

 

device-2013-11-24-032620

 

      สำหรับบทความนี้จะใช้วิธีอย่างง่าย คือดักการกดปุ่ม Back ที่หน้าแรกสุด เมื่อผู้ใช้กดปุ่ม Back ที่หน้าแรกสุดก็จะแสดง Dialog เพื่อให้ยืนยันทันที ถ้าเลือก Yes ก็จะใช้คำสั่งปิดแอปพลิเคชัน ถ้า No ก็จะยกเลิก Dialog เฉยๆ
        สำหรับปุ่ม Back จะรู้ได้ว่าผู้ใช้กดปุ่ม Back ได้ด้วยฟังก์ชัน onBackPressed

public void onBackPressed() {
    // กดปุ่ม Back แล้วจะให้โปรแกรมทำอะไรให้ใส่ในนี้
}

 เนื่องจากอยากให้ขึ้น Dialog เพื่อถามผู้ใช้ ดังนั้นในนี้ก็ต้องใช้คำสั่ง Dialog โดยตัวอย่างนี้ใช้แค่ Dialog ธรรมดาๆ มีปุ่ม Yes กับ No ให้กด ถ้าผู้ที่หลงเข้ามาอ่านจะเปลี่ยนเป็น Dialog อย่างอื่นก็ใช้ Custom Dialog ได้ เพราะสำคัญอยู่แค่ว่ากดปุ่มหนึ่งเพื่อออกจากแอปพลิเคชัน กับอีกปุ่มยกเลิก

AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setTitle("Exit");
dialog.setIcon(R.drawable.ic_launcher);
dialog.setCancelable(true);
dialog.setMessage("Do you want to exit?");

dialog.setPositiveButton("Yes", new OnClickListener() {
    public void onClick(DialogInterface dialog, int which) {
        finish();
    }    
});

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

ในตัวอย่างนี้จะกำหนดหัวข้อ Dialog ว่า Exit มีไอคอนแสดงด้วยเป็นไอคอนแอพน่ะแหละเอามาแก้ขัด และแสดงข้อความว่า Do you want to exit? และกำหนดให้ผู้ใช้แตะนอกเหนือจาก Dialog เพื่อยกเลิกได้ สำหรับปุ่ม Yes จะเป็นปุ่มแบบ Positive Button จะใช้คำสั่ง finish ส่วน No จะเป็นปุ่มแบบ Negative Button จะใช้คำสั่ง dialog.cancel

ดังนั้นโค๊ดในบทความนี้ก็จะมีเท่านี้นี่แหละ สำหรับ onBackPressed จะอยู่บริเวณเดียวกันกับ onCreate, onPause, onResume และ onStop เลย

Main.java

 

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;

public class Main extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    public void onBackPressed() {
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("Exit");
        dialog.setIcon(R.drawable.ic_launcher);
        dialog.setCancelable(true);
        dialog.setMessage("Do you want to exit?");
        dialog.setPositiveButton("Yes", new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                finish();
            }
        });
        
        dialog.setNegativeButton("No", new OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
        
        dialog.show();                
    }
}

nattanon

ณัฐนนท์ ลำสมุทร

Leave a Reply

Your email address will not be published. Required fields are marked *