1

我正在使用以下代码停止重新加载网页

public class MainActivity extends Activity {


WebView webView;

@Override


protected void onSaveInstanceState(Bundle outState) {


    WebView webView1 = (WebView)findViewById(R.id.webView);
     webView1.saveState(outState);


}    

@SuppressLint("SetJavaScriptEnabled")
@Override
public void onCreate(Bundle savedInstanceState) {


    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

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

    String url="http://www.google.com";


             if (savedInstanceState != null)
                        {
                 ((WebView)findViewById(R.id.webView)).restoreState(savedInstanceState);
                        }
             else{

             webView.setWebViewClient(new WebViewClient() {


        public void onPageFinished(WebView view, String url) {

            String name = MainActivity.this.webView.getTitle();
            TextView t=(TextView)findViewById(R.id.title); 

            t.setText(name);
            Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show();


        }
    });



    final Activity activity = this;

    final ProgressDialog progressDialog = new ProgressDialog(activity);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.setMessage("Loading...");
    progressDialog.setCancelable(false);

    final ProgressBar progressBar = (ProgressBar)findViewById(R.id.progressBar1);


    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setUserAgentString("Android");
    webView.setWebChromeClient(new WebChromeClient()
    {
         public void onProgressChanged(WebView view, int progress) {

                progressBar.setVisibility(View.VISIBLE);
                progressDialog.setProgress(0);
                activity.setProgress(progress * 1000);

                progressDialog.incrementProgressBy(progress);

                if(progress > 75)
                    progressBar.setVisibility(View.GONE);
            }
    }
            );


    webView.loadUrl(url);

             }

android:configChanges="orientation|keyboard|keyboardHidden"在我的清单文件中使用

但是当我运行它并改变手机的方向时。

页面仍然会重新加载,进度条开始显示并且永远不会关闭。

谁能告诉我这有什么问题?

4

6 回答 6

1

默认情况下,活动会在方向更改时重新创建。但是您可以通过android:configChanges="keyboardHidden|orientation在 AndroidManifest.xml 中设置您的活动声明并覆盖onConfigurationChanged()活动类的方法来更改它。

于 2012-07-12T09:35:40.603 回答
1

把它放在你的清单活动中

android:configChanges="keyboardHidden|orientation"

它对我有用

于 2012-07-12T09:45:24.630 回答
1

请在清单中添加 screenSize android:configChanges="orientation|keyboard|screenSize"

于 2013-09-06T07:52:21.690 回答
1

试试这个

在活动标签中,清单

android:screenOrientation="sensor"
        android:configChanges="keyboardHidden|orientation|screenSize"

爪哇

@Override
 public void onConfigurationChanged(Configuration newConfig) {
 super.onConfigurationChanged(newConfig);
 // We do nothing here. We're only handling this to keep orientation
 // or keyboard hiding from causing the WebView activity to restart.
}
于 2014-05-16T02:22:49.763 回答
0

您需要在清单文件中为 Activity 使用 configChanges 属性。因此,在您的清单文件中为每个活动使用以下代码。

<activity android:name=".YOUR_ACTIVITY_NAME" android:configChanges="orientation|keyboard|keyboardHidden"/>

当您不使用 configChangesonCreate()时,当设备方向更改或其他配置更改时再次调用该方法。

于 2012-07-12T09:34:38.707 回答
0

在我的代码中 WebView 在片段中:

在清单中:

<activity 
...
android:configChanges="orientation|keyboard|screenSize"
... />

活动中:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

在片段中:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    webView.saveState(outState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState == null)
        webView.loadUrl("about:blank");
    else
        webView.restoreState(savedInstanceState);
}

当方向改变时,它会平滑地改变。

于 2014-05-15T06:56:20.553 回答