(EDIT: Возможно, мне нужно перефразировать заголовок, но он по-прежнему описывает поведение правильно. Иногда, когда вы используете goBack() для первого URL-адреса, он загружается, а иногда и не работает, т. Даже если я сделаю это с loadURL() в onResume! См. код, который я добавил к Activity в нижней части вопроса.)goBack() в WebView возвращается в полном объеме
Задняя кнопка кнопки работает хорошо и возвращается через страницы, которые я посетил , Пока он не вернется к стартовому URL, который загружается отлично от onCreate. Затем я получаю небольшую задержку и пустую страницу, а не начальную страницу, которую я видел раньше.
Есть ли какой-нибудь трюк? Спам нескольких массивов истории с одним и тем же URL более одного раза в onCreate?
Код написан на основе ответов с этого сайта. Это весь java-файл.
package se.avia.tdca;
import se.avia.tdca.R;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
import android.view.KeyEvent;
public class Inspiration extends Activity {
Sharedprefs share;
WebView mywebview;
@Override
public void onBackPressed(){ //for < 4
if (mywebview.canGoBack()) {
mywebview.goBack();
mywebview.reload(); //desperate try
return;
}
super.onBackPressed();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mywebview.canGoBack()) {
mywebview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.inspiration);
share=new Sharedprefs(this);
mywebview = (WebView) findViewById(R.id.inspiration_webview);
String url = share.getSubUrl()+"/sources.html";
mywebview.getSettings().setJavaScriptEnabled(true);
mywebview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); //desperate try
final Activity activity = this;
mywebview.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different
// scales.
// The progress meter will automatically disappear when we reach
// 100%
activity.setProgress(progress * 1000);
}
});
mywebview.setWebViewClient(new WebViewClient() {
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Toast.makeText(activity, "Error loading Suppliers list: " + description,
Toast.LENGTH_SHORT).show();
}
});
mywebview.loadUrl(url);
}
}
Edit: Я теперь добавил этот код, чтобы заставить загрузить начальную страницу, когда активность переключается, а не только тогда, когда он создан и когда вы вернетесь. Эта ТАКЖЕ иногда не загружает стартовую страницу.
@Override protected void onResume() { super.onResume(); Toast.makeText (getApplicationContext(), "onResume", Toast.LENGTH_SHORT) .show(); mywebview.stopLoading(); String url = share.getSubUrl() + "/ sources.html"; mywebview.loadUrl (url); }
Тост отображается каждый раз, когда я переключаюсь на это действие, но стартовая страница только в первый раз. В остальное время страница пуста. Должен ли я «сохранить» mywebview
как-то на onPause()? Я просто не вижу ничего плохого в этом коде.
почему вам нужно сделать webView.goBack() inonbackpressed() и OnKeyDown() оба метода? – afadfadf
удален наKeyDown (даже если вы не указали, какой из них или что с ним возникла), все тот же. –
Это проблема только со стартовой страницей? goback() с других страниц работает нормально? – afadfadf