Android屏幕旋转问题

时间:2011-03-21 03:11:20

标签: android webview rotation

我的应用有问题。它正确地通过时间表系统中的所有形式并显示时间表,然而当我旋转屏幕以查看横向或纵向视图时,它会回到第一个屏幕,我无法弄清楚为什么...提前感谢任何帮助!

    package com.timetable;

import java.io.FileOutputStream;
import java.io.IOException;



  import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;

    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Picture;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.Window;
    import android.webkit.WebChromeClient;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;

    public class Timetable extends Activity {
        WebView mWebView;
        //int count = 0;
        String html = "<html><body>";
        String html2 = "<html><body>";
        Document docs;
        Document docs2;
        public String text(String htmlrec)
        {
            try {
                 docs2 = Jsoup.connect(htmlrec).get();
            } catch (IOException e) {
                e.printStackTrace();
            }
            Elements data = docs2.getElementsByClass("timetables");
            html2 += data.toString()+ "</body></html>";
            return html2;
        }

        public void main(String... args) {

            try {
                 docs = Jsoup.connect("http://www.dcu.ie/timetables/search.shtml").get();
            } catch (IOException e) {
                e.printStackTrace();
            }

            Elements table = docs.getElementsByClass("timetables");
            html += table.toString() + "</body></html>";
        }

        public void onCreate(Bundle savedInstanceState) {
            main(); 

            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);
            mWebView = (WebView) findViewById(R.id.webview);
            mWebView.setWebViewClient(new TimeClient());
            mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
            mWebView.setClickable(true);
            mWebView.requestFocus();
            mWebView.setInitialScale(1);
            //mWebView.getSettings().setBlockNetworkLoads(true);
            mWebView.getSettings().setSupportZoom(true);
            mWebView.getSettings().setJavaScriptEnabled(true);
            mWebView.getSettings().setDomStorageEnabled(true);
            mWebView.loadDataWithBaseURL("http://www.dcu.ie/timetables/",html, "text/html", "utf-8","http://www.dcu.ie/timetables/");

            final Activity MyActivity = this;
            mWebView.setWebChromeClient(new WebChromeClient() {
             public void onProgressChanged(WebView view, int progress)  
             {
              //Make the bar disappear after URL is loaded, and changes string to Loading...
              MyActivity.setTitle("Loading...");
              MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded

              // Return the app name after finish loading
                 if(progress == 100)
                    MyActivity.setTitle(R.string.app_name);
               }
             });
        }

        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
                mWebView.goBack();            
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
        private class TimeClient extends WebViewClient {
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (view.canGoBack() == false)
                //if (count == 0)
                {
                    String newUrl = text(url);
                    view.loadDataWithBaseURL("http://www.dcu.ie/timetables/",newUrl, "text/html", "utf-8","http://www.dcu.ie/timetables/");
                   // count+

+;
            }
            else
            {

                view.loadUrl(url);
                Picture picture = view.capturePicture();
                Bitmap  b = Bitmap.createBitmap( picture.getWidth(),picture.getHeight(), Bitmap.Config.ARGB_8888);
                Canvas c = new Canvas( b );
                picture.draw( c );
                FileOutputStream fos = null;
                try 
                {
                    fos = new FileOutputStream( "/sd/dcu" +
                    System.currentTimeMillis() + ".jpg" );
                    if ( fos != null )
                    {
                        b.compress(Bitmap.CompressFormat.JPEG, 90, fos );
                        fos.close();
                    }
                } 
                catch( Exception e )
                {
                } 
            }

            return true;
        }
    }


}

1 个答案:

答案 0 :(得分:6)

当您更改方向时,活动将被销毁并重新创建。为了避免破坏和重新创建活动,请输入:

android:configChanges="orientation|keyboardHidden|keyboard"

作为AndroidManifest.xml中活动的属性。