2012-03-08 58 views
1

在我的應用程序中,我有一個帶有三個選項卡的tabhost。所有三個選項卡都有一個webview,我加載了不同的URL。android在tabhost選項卡中的方向更改期間恢復webview

我想添加對方向更改的支持,以便每次更改配置時都不會重新加載網頁。所以我增加了以下額外的代碼全部三個選項卡活動

super.onCreate(savedInstanceState); 
    setContentView(R.layout.review_web); 
    webDetailInfo = (WebView) findViewById(R.id.webReview); 
    if (savedInstanceState != null) 
     webDetailInfo.restoreState(savedInstanceState); 
    else{..... 


@Override 
    protected void onSaveInstanceState(Bundle outState) { 
     Log.i("onsave", "detailweb"); 
     webDetailInfo.saveState(outState); 
    } 

現在,當我換手機我看到的是取向,網頁不再被重新裝入這是正確的。但是所有三個選項卡都顯示了與第一個選項卡中的webview內容相同的數據。

請幫我理解這種行爲和實現它的正確方法。

其中一個選項卡活動的源代碼如下所示。我有三個這樣的活動。 我看到的是,當這些選項卡中的任何一個方向發生變化時,所有選項卡活動和設置這些選項卡的父活動都會被終止。

import android.app.AlertDialog; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnCancelListener; 
import android.graphics.Bitmap; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.Window; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Toast; 

import com.idg.project.R; 
import com.idg.project.entity.ScannedProduct; 
import com.idg.project.services.ScannedProductDataAccessManager; 
import com.idg.project.utils.ReviewWebClient; 

public class ReviewWebActivity extends BaseActivity { 

    WebView webReview; 
    String reviewUrl; 
    ProgressDialog progreesDialogue; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     final BaseActivity MyActivity = ReviewWebActivity.this; 

     setContentView(R.layout.review_web); 
     if (savedInstanceState != null) 
      ((WebView)findViewById(R.id.webReview)).restoreState(savedInstanceState); 


     else{ 
     ScannedProduct product = getReviewUrl(); 
     reviewUrl = product.getReviewLink(); 

     if (reviewUrl.equals("")) { 
      String err = product.getErrorCode(); 
      if (err.equals("")) 
       err = "No Data Available for this product"; 
      Toast.makeText(getApplicationContext(), 
        "No Data Available for this product", 1).show(); 
      if (progreesDialogue != null && progreesDialogue.isShowing()) { 
       progreesDialogue.dismiss(); 
      } 
      return; 
     } else { 

      webReview = (WebView) findViewById(R.id.webReview); 
      webReview.setWebViewClient(new WebViewClient() { 

      webReview.getSettings().setJavaScriptEnabled(true); 
      if (isOnline()) { 
       webReview.loadUrl(reviewUrl); 
      } else { 
       showAlertMessge("Network Connection Error " 
         + "\nCheck your network connection"); 
      } 
     }} 
    } 

    } 


    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     Log.i("onsave", "reviewweb"); 
     ((WebView)findViewById(R.id.webReview)).saveState(outState); 
    } 

    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Log.i("ondestroy", "progressdialog null"); 
     progreesDialogue = null; 
    } 

} 

回答

0

,如果您在活動代碼清單文件上創建方法每個方向變化添加以下代碼類似這樣

<activity android:name=".Slime" 
       android:label="@string/app_name" 
       android:configChanges="keyboardHidden|orientation" 
       android:screenOrientation="landscape"> 

沒有這種被稱爲所以你Webview是重裝,但如果添加

android:configChanges="keyboardHidden|orientation" 

這條線在您的活動,這樣的而不是控制方向的時候,當時控制變更不會對的onCreate(去該活動)將繼續這種方法

// Called on rotation. 
// Does not call onDestroy anymore due to android:configChanges="keyboardHidden|orientation" in manifest 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 
} 

,你可以改變的控件屬性..

我希望這將hwlp你...

+0

感謝您的答覆。但是我的問題是,即使我像你說的那樣處理配置更改,保存的實例沒有爲每個選項卡獲取正確的內容,而是獲取了相同的數據。 – png 2012-03-08 08:38:43

+0

@preetha你可以添加更多的代碼? – 2012-03-08 09:08:24

+0

完成。我已更新我的問題 – png 2012-03-08 09:20:18