1

次のコードを使用して Web ページのリロードを停止しています

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

マニフェスト android:configChanges="orientation|keyboard|screenSize" にも screenSize を追加してください

于 2013-09-06T07:52:21.690 に答える
0

マニフェストファイルのアクティビティにはconfigChanges属性を使用する必要があります。したがって、各アクティビティのマニフェストファイルで以下のコードを使用してください。

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

configChangesを使用していないonCreate()場合、デバイスの向きが変更されたとき、またはその他の構成が変更されたときに、メソッドが再度呼び出されます。

于 2012-07-12T09:34:38.707 に答える