gpt4 book ai didi

java - Android WebView 应用程序在旋转时重置

转载 作者:行者123 更新时间:2023-12-02 04:31:55 25 4
gpt4 key购买 nike

我在使用 webview 时遇到一些问题,在旋转时应用程序会重置为默认 URL。我已经四处寻找解决方案,并在这里尝试了一些解决方案,但每个解决方案都遇到了不同的问题。

这就是我的 .java 代码中的内容

package uk.co.grcade.grcade;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.app.Activity;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.view.View;
import android.webkit.DownloadListener;
import android.webkit.WebViewClient;

public class GRcade extends Activity {

WebView web;
String webURL = "http://grcade.co.uk";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grcade);

if (savedInstanceState != null)
{
web.loadUrl(webURL);
}

web = (WebView) findViewById(R.id.web);
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl(webURL);
web.setPadding(0, 0, 0, 0);
web.getSettings().setLoadWithOverviewMode(true);
web.getSettings().setUseWideViewPort(true);
web.getSettings().setSupportZoom(true);
web.getSettings().setBuiltInZoomControls(true);
web.getSettings().setDisplayZoomControls(false);
}

@Override
protected void onSaveInstanceState (Bundle outState )
{
super.onSaveInstanceState(outState);
web.saveState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
super.onRestoreInstanceState(savedInstanceState);
web.restoreState(savedInstanceState);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_grcade, menu);
return true;
}

private class HelloWebViewClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView web, String url) {
web.loadUrl(url);
return true;
}
}

public boolean onKeyDown(int ketCode, KeyEvent event) {
if ((ketCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
web.goBack();
return true;
}
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}

return super.onOptionsItemSelected(item);
}
}

我从此处的帖子中获取了代码,但无法发表评论来询问为什么会这样:

web = (WebView) findViewById(R.id.web);

显示无法解决符号错误,我对这整个事情很陌生,所以希望得到一些帮助,帮助我如何消除该错误,并允许我拥有一个可以旋转而无需重置回的 webview 应用程序默认页面。

谢谢。

最佳答案

您的问题出在 OnCreate 方法中。您的代码

  public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_grcade);

if (savedInstanceState != null)
{
web.loadUrl(webURL);
}
.........
.........

您检查 Bundle 对象是否不为 null,然后加载 URL。相反,您应该在 bundle 对象不为空时恢复状态。像这样的事情

if (savedInstanceState != null) {
webView.restoreState(savedInstanceState);
} else {
webView.loadUrl("http://grcade.co.uk");
}

关于java - Android WebView 应用程序在旋转时重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31345017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com