วิธีการปิดการใช้งานปุ่มย้อนกลับใน Android ในขณะที่ออกจากระบบแอปพลิเคชัน?
วิธีการปิดการใช้งานปุ่มย้อนกลับใน Android ในขณะที่ออกจากระบบแอปพลิเคชัน?
คำตอบ:
แทนที่เมธอด onBackPressed และไม่ทำอะไรเลยถ้าคุณตั้งใจจะจัดการกับปุ่มย้อนกลับบนอุปกรณ์
@Override
public void onBackPressed() {
if (shouldAllowBack()) {
super.onBackPressed();
} else {
doSomething();
}
}
หากกำลังมองหา api ระดับสูงกว่าและสูงกว่านี้จะได้ผลดี
@Override
public void onBackPressed() {
// Do Here what ever you want do on back press;
}
หากกำลังมองหา android api level ไม่เกิน 1.6
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//preventing default implementation previous to android.os.Build.VERSION_CODES.ECLAIR
return true;
}
return super.onKeyDown(keyCode, event);
}
เขียนโค้ดด้านบนในกิจกรรมของคุณเพื่อป้องกันการกดปุ่มย้อนกลับ
คุณสามารถทำสิ่งนี้ได้ง่ายๆอย่าเรียก super.onBackPressed ()
@Override
public void onBackPressed() {
// super.onBackPressed();
// Not calling **super**, disables back button in current screen.
}
เพียงแค่แทนที่onBackPressed ()วิธีการ
@Override
public void onBackPressed() { }
ฉันใช้มัน .............
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK)
Toast.makeText(getApplicationContext(), "back press",
Toast.LENGTH_LONG).show();
return false;
// Disable back button..............
}
หากคุณต้องการตรวจสอบให้แน่ใจว่าแอปพลิเคชันไคลเอนต์ Android ของคุณออกจากระบบเซิร์ฟเวอร์ก่อนที่กิจกรรมของคุณจะถูกฆ่า -> ออกจากระบบด้วยบริการบนเธรดของตัวเอง (นั่นคือสิ่งที่คุณควรจะทำ)
การปิดใช้งานปุ่มย้อนกลับจะไม่ช่วยอะไรคุณ คุณจะยังคงมีปัญหาเดียวกันเมื่อผู้ใช้รับสายเช่น เมื่อได้รับโทรศัพท์กิจกรรมของคุณมีโอกาสมากที่จะถูกฆ่าก่อนที่จะได้รับคำตอบที่เชื่อถือได้จากเครือข่าย
นั่นเป็นเหตุผลที่คุณควรปล่อยให้บริการรอเธรดของตัวเองสำหรับคำตอบจากเครือข่ายแล้วลองอีกครั้งถ้ามันไม่ประสบความสำเร็จ บริการ android ไม่เพียง แต่มีโอกาสน้อยที่จะถูกฆ่าก่อนที่จะได้รับคำตอบกลับ แต่ถ้ามันถูกฆ่าจริง ๆ ก่อนที่จะเสร็จสิ้นงานมันสามารถรับการปลุกโดย AlarmManager เพื่อลองอีกครั้ง
เพียงแทนที่เมธอด onBackPressed () และไม่จำเป็นต้องเรียกคลาส super ของเมธอด onBackPressed หรืออื่น ๆ ..
@Override
public void onBackPressed()
{
}
หรือส่งกิจกรรมปัจจุบันของคุณไปที่เมธอด onBackPressed ()
@Override
public void onBackPressed()
{
startActivity(new Intent(this, myActivity.class));
finish();
}
แทนที่ชื่อกิจกรรมที่ต้องการของคุณเป็น myActivity
ถ้าคุณใช้แฟรกเมนต์ดังนั้นก่อนอื่นให้เรียกใช้เมธอด callParentMethod ()
public void callParentMethod(){
context.onBackPressed(); // instead of context use getActivity or something related
}
จากนั้นเรียกใช้วิธีว่าง
@Override
public void onBackPressed()
{
}
FragmentActivity
ถ้าคุณกำลังใช้ จากนั้นทำเช่นนี้
Fragment
ครั้งแรกเรียกนี้ภายในของคุณ
public void callParentMethod(){
getActivity().onBackPressed();
}
แล้วโทรonBackPressed
วิธีการในFragmentActivity
ชั้นเรียนผู้ปกครองของคุณ
@Override
public void onBackPressed() {
//super.onBackPressed();
//create a dialog to ask yes no question whether or not the user wants to exit
...
}
เพียงแค่ใช้รหัสนี้: หากคุณต้องการปิดการใช้งาน backpressed คุณไม่ต้องใช้ super.OnBackPressed ();
@Override
public void onBackPressed() {
}
หากคุณต้องการปิดการใช้งานแอพของคุณในขณะที่ออกจากระบบคุณสามารถเปิดกล่องโต้ตอบที่ไม่สามารถยกเลิกได้
คุณสามารถลบล้างonBackPressed()
วิธีการในกิจกรรมของคุณและลบการโทรไปที่ซูเปอร์คลาส
@Override
public void onBackPressed() {
//remove call to the super class
//super.onBackPressed();
}
คุณเพียงแค่ต้องแทนที่วิธีการสำหรับปุ่มย้อนกลับ คุณสามารถปล่อยให้เมธอดว่างหากคุณต้องการเพื่อที่จะไม่มีอะไรเกิดขึ้นเมื่อคุณกดปุ่มย้อนกลับ โปรดดูรหัสด้านล่าง:
@Override
public void onBackPressed()
{
// Your Code Here. Leave empty if you want nothing to happen on back press.
}
นอกเหนือจากสองวิธีนี้จากคำตอบข้างต้น
onBackPressed () (API ระดับ 5, Android 2.0)
onKeyDown () (API ระดับ 1, Android 1.0)
คุณสามารถแทนที่dispatchKeyEvent()
(ระดับ API 1, Android 1.0)เช่นนี้
dispatchKeyEvent()
(API ระดับ 1, Android 1.0)
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
// TODO Auto-generated method stub
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.dispatchKeyEvent(event);
}
ปิดการใช้งาน back buttton ใน Android
@Override
public void onBackPressed() {
return;
}
สำหรับฉันเพียงแค่การเอาชนะonBackPressed()
ไม่ได้ทำงาน แต่ระบุอย่างชัดเจนว่ากิจกรรมใดที่ควรเริ่มทำงานได้ดี:
@Override
public void onBackPressed(){
Intent intent = new Intent(this, ActivityYouWanToGoBack.class);
startActivity(intent);
}
ลองสิ่งนี้:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
return true;
}
return super.onKeyDown(keyCode, event);
}
ลบsuper.onBackPressed()
จากการpublic void onBackPressed()
ทำงานที่ดี มันผ่านการทดสอบใน Android 9