私は3つのタブを持つTabbedActivityを持っています。毎週、転送と通話。転送アクティビティには、デバイスの向きが変更されるたびに維持したいWebViewが含まれています。私は、以下に私を導いたたくさんの例を見つけました。これでWebViewはSaved Instanceに復元されたように見え、OnProgressChange中に表示されるProgressDialogは再配置後にバックアップを表示しません。ただし、WebViewが表示するサイトにはチェックボックスがあります。また、LandscapeでチェックしてからPortraitをオンにした場合(またはその逆の場合)、チェックボックスはすべて元のチェックされていない状態に戻ります。私のDropDownListsでも同じです。WebView SaveInstanceState HTMLコントロールが元の値にリセットされないようにしない
[Activity]
public class Transfer : Activity
{
private WebView web;
private static ProgressDialog progress;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Transfer);
web = (WebView)FindViewById(Resource.Id.web);
progress = new ProgressDialog(this);
if (bundle == null)
{
web.Settings.JavaScriptEnabled = true;
web.SetWebChromeClient(new CustomWebChromeClient(this));
web.SetWebViewClient(new CustomWebViewClient(this));
web.ClearCache(true);
web.LoadUrl("http://www.mysite.com");
}
else
{
web.RestoreState(bundle);
}
}
protected override void OnSaveInstanceState(Bundle outState)
{
web.SaveState(outState);
}
private class CustomWebChromeClient : WebChromeClient
{
private readonly Activity _context;
public CustomWebChromeClient(Activity context)
{
_context = context;
}
public override void OnProgressChanged(WebView view, int newProgress)
{
progress.SetTitle(newProgress + "%");
if (!progress.IsShowing)
{
progress.SetMessage("Please Wait...");
progress.Show();
}
}
}
private class CustomWebViewClient : WebViewClient
{
private readonly Activity _context;
public CustomWebViewClient(Activity context)
{
_context = context;
}
public override void OnPageFinished(WebView view, string url)
{
if (progress.IsShowing)
progress.Hide();
}
}
}
とても早く返信いただきありがとうございます。 「私のwebviewに入れなければならないすべての価値を再読み込みする」とはどういう意味ですか? – jmease
あなたのページ上のものを編集するときは、通常はJavaScriptの値だけが変更され、URLは変更されません。方向が変わると、URLがリロードされるとこれらの値がリセットされます。 – Wottah
ありがとうございます。私が何を意味するのか尋ねなかったと思います。まったくどのようにあなたのウェブページにすべての値を保存して再割り当てしていますか? ViewState、クッキー、設定マネージャ、キャッシュ? – jmease