2016-03-30 20 views
1

Android için program yapmaya çalışıyorum ve küçük bir sorun yaşıyorum. Bir uygulama yaptım, ancak telefonun düğmesinin arkasını yapamıyorum, uygulamayı tamamen kapatmadan önceki sayfaya dönün. WebView ile çalışıyorum.WebView, düğmeye tekrar bastığımda kapanıyor android klavye

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     getSupportActionBar().hide(); 

     // CODIGO DO WEB VIEW 

     final WebView myWebView = (WebView) findViewById(R.id.webView); 
     myWebView.loadUrl("http://www.idestudos.com.br"); 
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setSupportZoom(true); 
     webSettings.setBuiltInZoomControls(true); 

     myWebView.setWebViewClient(new MyBrowser()); 

     myWebView.setWebViewClient(new WebViewClient() { //CODE WEBVIEW} 
+0

Logcat'inizle alakalı bir şey var mı? Param NullPointerException veya en az bir çeşitlilik istisnası olurdu. –

+0

URL değişikliklerini işlemek için http://developer.android.com/reference/android/webkit/WebViewClient.html#onPageStarted sayfasını kontrol edin. WebView'in yüklediği gerçek URL'yi (her URL güncellenir) depolamaya devam etmeniz ve daha sonra, uygulamanızın tüm Etkinliği bitirmek yerine WebView'unuzdaki önceki URL'yi yükleyebilmesi için onBackPressed() yöntemini geçersiz kılmanız gerekebilir. –

cevap

1

bir çözüm:

WebView URL yükleme geçersiz kılar, otomatik olarak ziyaret edilen web sayfalarının geçmişini biriktirir

. GoBack() ve goForward() ile geçmişte geriye ve ileriye doğru gidebilirsiniz.

Örneğin, burada Etkinlik geriye gezinmek için düğmeye cihazı Geri şekilde kullanabilirsiniz:

Umut daha fazla bilgi için

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
// Check if the key event was the Back button and if there's history 
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { 
    myWebView.goBack(); 
    return true; 
} 
// If it wasn't the Back key or there's no web page history, bubble up to the default 
// system behavior (probably exit the activity) 
return super.onKeyDown(keyCode, event); 
} 

Kontrol dışarı Building Web Apps in WebView Android Geliştiricileri Kılavuzu size yardımcı olur!

+0

OnCreate yöntemini eklemek mi istiyorsunuz? –

+0

, web görünümünüzü oluşturduğunuz ve eklediğiniz her yere ekler. Umarım yardımcı olur! –

1

Kolayca canGoBack çağrılarak uygulanır.

if(webView.canGoBack()) { 
     webView.goBack(); 
    } 

Ve böyle aktivitesinde onBackPressed yönteminin içine çağırarak: Burada

@Override public void onBackPressed() { 

    if(webView != null && webView.canGoBack()) { 
     webView.goBack(); 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

Ayrıca, bir "onKeyDown" a da dönmelisiniz. Aksi halde, kullanıcı backbuttona ulaşırsa ve hiçbir tarih olmazsa hiçbir şey olmaz. –

+0

Nope, super.onBackPressed döndürmediğiniz sürece iyi olmalı. – SacreDeveloper

+0

WebView.canGoBack() işlevi false olursa "backBackPressed" değerini geri döndürmeniz gerekir. Ve görüyorum ki cevabınızı düzenlediniz –