2012-12-24 16 views
5

oluşturulan ve ben görünümü cihaz rotasyonları üzerinde ısrar etmek istiyorum.geri webview devlet dinamik Dinamik içeriği yükler benim uygulamasında bir <code>WebView</code> sahip HTML

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    mWebView.saveState(outState); 
} 

Ve onCreate içinde(): Ben aşağıdaki kod satırlarını yazdı

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    if (savedInstanceState != null) { 
     if(D.bug){ 
      Log.i(TAG, "Restoring browser state"); 
     } 
     mWebView.restoreState(savedInstanceState); 
    } else { 
     if(D.bug){ 
      Log.i(TAG, "Not restoring browser state"); 
     } 
     mWebView.loadUrl("file:///android_asset/html/browser_3col.html"); 
    } 
    return mWebView; 
} 

Ama bu etkili bir sayfayı yeniden yükler. Dinamik olarak oluşturulmuş HTML'yi geçmek istiyorum.

Tüm belgeyi HTML'yi JavascriptInterface aracılığıyla outState'de saklamak ve ardından JavascriptInterface aracılığıyla yeniden sıfırlamayı düşünüyordum.

bu iyi bir yaklaşım olabilir mi? İç HTML'lerini almamı sağlayan WebView yönteminin yok mu? Benim JavaScript kodu

:

+0

Hiç javascript & jvascript değişkenleri tutacak bir çözüm buldunuz mu? – Alexey

cevap

0

Benim şu anki çözüm aşağıdaki kodu vardır içinde

window.JSInterface.dumpInnerHtml(document.documentElement.innerHTML); 

benim JavascriptInterface:

@JavascriptInterface 
public void dumpInnerHtml(String htmlDump) { 
    if (!mBrowseFragment.isDetached()) { 
     mBrowseFragment.updateWebviewHtml(htmlDump); 
    } 
} 

onSaveInstance() yılında:

super.onSaveInstanceState(outState); 
    mWebView.saveState(outState); 
    outState.putString(INSTANCE_CONTAINER_HTML, mCurrentHtmlDump); 

onCreate() yılında:

if (savedInstanceState != null) { 
     mWebView.restoreState(savedInstanceState); 
     String restoredHtml = savedInstanceState 
       .getString(INSTANCE_HTML); 
     if (restoredHtml != null) { 
      mWebView.loadData(restoredHtml, "text/html", "utf-8"); 
     } 
} 

Neredeyse çalışır. Ama onunla bazı problemlerim var. LoadData() komut dosyası etiketlerini yorumlamıyor gibi görünüyor. (Benim js'ler kırılır.) Ve bunun daha zarif bir şekilde çözülebileceğini hissediyorum.

+0

It 2018; Web sayfalarına dinamik olarak eklenen içerik kaydetmek hala imkansız mı? :( – David

İlgili konular