2016-03-30 11 views
1

Я пытаюсь запрограммировать андроид, и у меня небольшая проблема. Я сделал приложение, но не могу сделать обратную сторону кнопки телефона, вернуться на предыдущую страницу без полного закрытия приложения. Я работаю с WebView.WebView закрывается, когда я нажимаю кнопку назад клавиатуру Android

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

В вашем логарифме есть что-то важное? Мои деньги были бы в NullPointerException или, по крайней мере, исключении из некоторого разнообразия. –

+0

Проверьте это http://developer.android.com/reference/android/webkit/WebViewClient.html#onPageStarted, чтобы обрабатывать изменения URL. Возможно, вам нужно будет сохранить фактический URL-адрес (каждый раз, когда URL-адрес будет обновляться), который загружается WebView, а затем переопределить метод onBackPressed(), чтобы ваше приложение загрузило предыдущий URL-адрес в вашем WebView, а не завершив всю активность. –

ответ

1

Вот решение:

Когда WebView переопределяет URL загрузки, он автоматически накапливает историю посещенных веб-страниц , Вы можете перемещаться назад и вперед по истории с помощью goBack() и goForward().

Например, вот как ваша активность может использовать устройство Назад кнопку для перехода назад:

@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); 
} 

ЗАКАНЧИВАТЬ Building Web Apps in WebView Android Developers Guide для получения дополнительной информации

Надеется, что это помогает!

+0

Вставить из метода OnCreate? –

+0

вставьте его везде, где вы создаете свой веб-просмотр и инициализируете его. Надеюсь, поможет! –

1

Простая реализация путем вызова canGoBack.

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

И назвав его изнутри onBackPressed метода в деятельности, как это:

@Override public void onBackPressed() { 

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

Вы также должны «возвращать» 'onKeyDown'. В противном случае, если пользователь попадет в подкладку, и нет никакой истории, ничего не произойдет. –

+0

Нет, до тех пор, пока вы не возвращаете super.onBackPressed, он должен быть в порядке. – SacreDeveloper

+0

Вам нужно «return onBackPressed», если 'webView.canGoBack()' false. И я вижу, что вы отредактировали свой ответ –

Смежные вопросы