2011-03-18 55 views
1

的重載我有加載一個網頁流量的活動:Android的保存網頁視圖存儲召回以後活動

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    webview = (WebView) findViewById(R.id.dashboard_webview); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.setWebViewClient(new HelloWebViewClient()); 

    if (savedInstanceState != null) 
    { 
     webview.restorePicture(getIntent().getExtras(), f); 
     webview.restoreState(getIntent().getExtras()); 
    } 
    else 
    { 
     webview.loadUrl("http://www.yahoo.com"); 
    } 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) 
{ 
    super.onSaveInstanceState(outState); 
    WebBackForwardList lList = webview.saveState(outState); 
    boolean savedPic = webview.savePicture(outState, f); 

我也有一個「工具欄」屏幕會啓動另一個活動的底部,這本質上是做同樣的事情,加載一個URL。當我想切換回第一個活動時,就會出現問題。當我離開第一個活動時,onSaveInstanceState被調用,但如果我只是試圖保存到捆綁onCreate每次仍然會返回一個空包,不知道爲什麼。

所以我認爲最好的選擇是簡單地保存webview以我自己的方式。什麼是最好的方式來做到這一點,或者替代地爲什麼在這個世界上,即使我保存了捆綁包,我也永遠不會得到一個不爲空的捆綁包?這裏僅供參考是我的工具欄,它包含在每個佈局的底部:

package com.tseng.example; 

import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.res.TypedArray; 
import android.util.AttributeSet; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.webkit.WebView; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class Toolbar extends LinearLayout 
{ 

    public Toolbar(final Context context) 
    { 
     super(context); 
    } 
    public Toolbar(final Context con, AttributeSet attrs) 
    { 
     super(con, attrs); 
     setGravity(Gravity.BOTTOM); 
     // setMinimumHeight(50); 

     setBackgroundColor(getResources().getColor(android.R.color.transparent)); 

     LayoutInflater inflater = (LayoutInflater)  con.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     inflater.inflate(R.layout.navigation, this); 

     TypedArray a = con.obtainStyledAttributes(attrs, R.styleable.Toolbar); 
     String option = a.getString(R.styleable.Toolbar_tab_id); 

     String resourceId = "com.tseng.example:id/" + option; 
     int optionId = getResources().getIdentifier(resourceId, null, null); 
     TextView currentOption = (TextView) findViewById(optionId); 
     currentOption.setBackgroundColor(getResources().getColor(android.R.color.white)); 
     currentOption.setTextColor(getResources().getColor(android.R.color.black)); 
     currentOption.requestFocus(optionId); 
     currentOption.setFocusable(false); 
     currentOption.setClickable(false); 

     TextView tab1 = (TextView) findViewById(R.id.tab1); 
     tab1.setOnClickListener(new OnClickListener() 
      { 
      public void onClick(View v) 
        { 
       Intent intent = new Intent(con, ShowDashboard.class); 
       intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
       //con.startActivity(intent); 
       Activity lAct = ((Activity)con); 
       //((Activity)con).finish(); 
       ((Activity)con).startActivity(intent); 

      } 
     }); 

     TextView tab2 = (TextView) findViewById(R.id.tab2); 
     tab2.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(con, ShowLog.class); 
       //con.startActivity(intent); 
       intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
       Activity lAct = ((Activity)con); 
       //((Activity)con).finish(); 
       ((Activity)con).startActivity(intent); 
      } 
     }); 

     TextView tab3 = (TextView) findViewById(R.id.tab3); 
     tab3.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(con, ShowCalls.class); 
       con.startActivity(intent); 
      } 
     }); 

     TextView tab4 = (TextView) findViewById(R.id.tab4); 
     tab4.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       Intent intent = new Intent(con, ShowTimer.class); 
       con.startActivity(intent); 
      } 
     }); 

    } 


} 

回答

0

我懷疑問題可能在於您的onCreate方法。給super.onCreate()添加一個調用,看看是否解決了這個問題。

如果這樣不起作用,請嘗試使用onRestoreInstanceState來代替,看看這是否會給您一個更好的結果。