จะปิดการใช้งานปุ่มย้อนกลับที่กดเพื่อ webview ใน Android ได้อย่างไร?

จะปิดการใช้งานปุ่มย้อนกลับที่กดเพื่อ webview ใน Android ได้อย่างไร?

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
     if (wv1 != null && (keyCode == KeyEvent.KEYCODE_BACK)
                     && wv1.canGoBack() )
     {

        wv1.goBack();
    }

    return true;
}

person naveenmethuku    schedule 18.09.2015    source แหล่งที่มา
comment
กรุณาให้ข้อมูลเพิ่มเติมบางอย่าง คุณต้องการบรรลุอะไร? ฉันไม่ได้รับสิ่งที่คุณถาม   -  person Thomas R.    schedule 18.09.2015
comment
Webview มองเห็นได้ตลอดเวลา ??   -  person uday    schedule 18.09.2015
comment
คุณสามารถแทนที่วิธีใดวิธีหนึ่งเหล่านี้ dispatchKeyEvent, onBackPressed, onKeyDown โปรดดูคำตอบนี้สำหรับข้อมูลเพิ่มเติม   -  person LF00    schedule 23.06.2017


คำตอบ (5)


หากคุณต้องการปิดการใช้งานการทำงานของปุ่มย้อนกลับเมื่อ WebView มองเห็นได้ และเปิดใช้งานการทำงานของปุ่มย้อนกลับหาก WebView มองไม่เห็น ลองใช้โค้ดด้านล่างในกิจกรรมของคุณ

@Override
public void onBackPressed() {
   if(webview.getVisibility()==View.VISIBLE){
      // dont pass back button action
      if(webview.canGoBack()){
         webview.goBack();
      }
      return;
   }else{
      // pass back button action
      super.onBackPressed();
   }
}
person uday    schedule 18.09.2015
comment
ทำได้ดีนี่! สำหรับฉัน ฉันไม่เคยต้องการให้ webview ขโมยการกดปุ่มย้อนกลับ ดังนั้นภายใน public void onBackPressed() ฉันจึงมีบรรทัดเดียว super.onBackPressed(); - person Someone Somewhere; 24.07.2018

เพียงแทนที่เมธอด onBackPressed()

@Override
public void onBackPressed() { }
person KishuDroid    schedule 18.09.2015

โปรดลองสิ่งนี้

   @Override
public void onBackPressed() {
      if(webview.canGoBack()){
         webview.goBack();
      }
    else{
      super.onBackPressed();
   }
}
person Ashish Agrawal    schedule 18.09.2015

มีหลายวิธีที่จะทำ

โซลูชันที่ 1 แทนที่ DispatchKeyEvent()

DispatchKeyEvent()(API ระดับ 1, Android 1.0)

อ้างถึงคำตอบของฉัน ใช้ DispatchKeyEvent เพื่อปิดการใช้งานปุ่มย้อนกลับ

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    // TODO Auto-generated method stub
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        return true;
    }
    return super.dispatchKeyEvent(event);
}

โซลูชันที่ 2 แทนที่ onBackPressed()

onBackPressed() (API ระดับ 5, Android 2.0)

โปรดดูที่ ใช้ onBackPressed() เพื่อปิดใช้งานปุ่มย้อนกลับ

@Override
public void onBackPressed() {
}

โซลูชันที่ 3 แทนที่ onKeyDown()

onKeyDown() (API ระดับ 1, Android 1.0)

โปรดดูที่ ใช้ onKeyDown() เพื่อปิดใช้งานปุ่มย้อนกลับ

@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);    
}
person LF00    schedule 23.06.2017
comment
ฉันต้องการให้เบราว์เซอร์ไม่ดำเนินการย้อนกลับเริ่มต้นหลังจากที่ผู้ใช้กดปุ่มย้อนกลับ แต่ JavaScript จะได้รับเหตุการณ์สำคัญ (document.onkeydown และ keyCode = 8) แทน เป็นไปได้ไหม? - person forDream; 03.05.2018
comment
@forDream ฉันคิดว่าเป็นไปได้ คุณต้องแน่ใจว่าเหตุการณ์ js หรือเหตุการณ์ java ก่อน และคุณอาจส่งผ่านเหตุการณ์การคลิกระหว่าง js และโค้ด java - person LF00; 03.05.2018
comment
โดยทั่วไป ฉันต้องการส่งรหัสคีย์ไปยัง webview สำหรับค่าใดๆ เช่น รหัสคีย์ -1 / -2 หรืออย่างอื่น เช่น. ทริกเกอร์ document.onkeydown / onkeypress / onkeyup - person forDream; 03.05.2018

คุณได้เพิ่มโค้ดด้านล่างในกิจกรรมเพื่อปิดกิจกรรมที่กดกลับ

@Override
public void onBackPressed() {

}
person Android Team    schedule 18.09.2015