PhoneGap/Cordova

[PhoneGap] วิธีทำให้ปุ่ม back ใน Android App เป็นการออกจากโปรแกรม

เรื่องที่เกี่ยวข้อง - Android, Code, How-to, PhoneGap

PhoneGap Logo Thai ภาษาไทยพอดีมีคน comment ถามไว้ใน video “วิธีสร้าง Android App project สำหรับ PhoneGap (Windows)” ที่ผมโพสขึ้นบน YouTube ว่าพบปัญหาประมาณว่า…

ผมเขียนฟังก์ชั่นกดปุ่ม back ในหน้าแรกแล้วให้ออกจากแอปครับ แล้วพอลองรันบน emulator มันแจ้ง error ว่า error initializing cordova class not found เกิดจากอะไรเหรอครับ ขอบคุณครับ

สาเหตุของปัญหา

ส่วนใหญ่ที่เราเจอ error แบบ error initializing cordova class not found  จะเกิดจากเราไปเรียกใช้ PhoneGap API (ในที่นี้รวมถึงการ bind event ของ PhoneGap)  ก่อนที่ cordova.js จะถูกโหลดขึ้นมาโดยสมบูรณ์นั่นเอง

อารมณ์ว่า ยังไม่พร้อม แล้วใช้เลย จะเกิดปัญหาแบบนี้ครับ

วิธีการทำที่ถูกต้อง

การกำหนดให้ปุ่ม Back ใน Android device กลายเป็นปุ่มที่ใช้ในการออกจาก Application นั้นสามารถทำได้ง่ายๆ โดยมีขั้นตอนดังนี้

  1. ให้ add event listener สำหรับ event ที่ชื่อbackbutton  (ให้แน่ใจว่าเกิด event deviceready  แล้ว)
  2. ให้เช็คว่าหน้าที่เปิดปัจจุบันเป็นหน้าแรก (ตัวอย่างจะใช้ JQuery Mobile และตั้งชื่อ id ของ page แรกว่าhome )
  3. ใช้คำส่ัง navigator.app.exitApp()

โดยเราสามารถเขียนได้ดัง Code ต่อไปนี้

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(){
    document.addEventListener("backbutton", function(e){
       if($.mobile.activePage.is('#home')){

           navigator.app.exitApp();
       }
       else {
           navigator.app.backHistory()
       }
    }, false);
}

ที่มา – StackOverflow

เริ่มต้นยุค AI ด้วยคอร์สฟรี และพรีเมี่ยม กับพล

หากชอบสิ่งที่พลเล่า เรื่องที่พลสอน สามารถสนับสนุนพลโดยการเข้าเรียนคอร์สออนไลน์ของพลนะคร้าบ

  • เข้าใจง่าย ใช้ได้จริง ออกแบบการสอนอย่างเข้าใจโดยโค้ชพล
  • มีคอร์สสำหรับคนใช้งานทั่วไป จนถึงเรียนรู้เพื่อใช้งานในสายอาชีพขั้นสูง
  • ทุกคอร์สมีใบประกาศณียบัตรรับรองหลังเรียนจบ

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save