开发者

Android Screen Rotate Problem

I have a problem with my app. It correctly goes through all forms in a timetable system and shows the timetable however when I then rotate the screen to view landscape or portrait depending, it goes back to the first screen and I cant figure out why...thanks in advance for any help!

    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;
        }
    }


}


What's happening is that when you change orientation the Activity is destroyed and recreated. To avoid having the activity destroyed and recreated, put:

android:configChanges="orientation|keyboardHidden|keyboard"

as an attribute of your activity in AndroidManifest.xml.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜