Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีเปิดใช้งานปุ่ม Back ใน Android WebView

ภาพรวม

WebView ไม่มีการจัดการปุ่ม Back (Hardware/Software Back Button) อัตโนมัติ ต้อง Override onBackPressed() เพื่อให้ย้อนกลับหน้าเว็บได้ แทนที่จะปิดแอปทันที

โค้ดสำคัญ: Override onBackPressed

private WebView webView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ... initialization code ...
    webView = findViewById(R.id.web_view);
    webView.setVerticalScrollBarEnabled(true);
    webView.getSettings().setDefaultTextEncodingName("utf-8");
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("https://touch.facebook.com/");
    // WebViewClient, WebChromeClient setup...
}

@Override
public void onBackPressed() {
    if (webView != null && webView.canGoBack()) {
        webView.goBack();  // ย้อนกลับหน้าเว็บก่อนหน้า
    } else {
        super.onBackPressed();  // ไม่มีหน้าก่อนหน้า -> ปิดแอป
    }
}

การทำงานของ canGoBack() และ goBack()

  • canGoBack(): คืนค่า true ถ้ามีประวัติหน้าเว็บก่อนหน้า
  • goBack(): นำทางกลับหน้าก่อนหน้าในประวัติ
  • canGoForward() / goForward(): สำหรับปุ่ม Forward (ถ้ามี)

เพิ่มปุ่ม Forward (Optional)

// ใน Toolbar หรือ Menu
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.action_forward && webView.canGoForward()) {
        webView.goForward();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

ข้อควรพิจารณา

  • จัดการประวัติ (History) ให้เหมาะสม - ไม่ควรเก็บมากเกินไป
  • ใช้ webView.clearHistory() เมื่อต้องการล้างประวัติ
  • ใน Android 13+ (API 33) พฤติกรรม Back Button อาจเปลี่ยนไป (Predictive Back)

Manifest

เพียง INTERNET permission เท่านั้น