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;
}
}
感謝您的答覆。但是我的問題是,即使我像你說的那樣處理配置更改,保存的實例沒有爲每個選項卡獲取正確的內容,而是獲取了相同的數據。 – png 2012-03-08 08:38:43
@preetha你可以添加更多的代碼? – 2012-03-08 09:08:24
完成。我已更新我的問題 – png 2012-03-08 09:20:18