2010-04-01 16 views
33

Tamam. HERKESİNE baktım ve küçük beynim bir aktiviteyi yenilemenin daha iyi bir yolunu anlayamıyor. Anlayabileceğim herhangi bir öneri harika olurdu. :)WebView yenilemek için daha iyi bir yolu var mı?

İşte java kodu: Burada

package com.dge.dges; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.webkit.WebView; 
import android.widget.Button; 

public class dgeActivity extends Activity { 
WebView mWebView; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings(); 
     mWebView.loadUrl("http://www.websitehere.php"); 

     Button newButton = (Button)findViewById(R.id.new_button); 
     newButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
    Intent intent = new Intent(dgeActivity.this, dgeActivity.class); 
    startActivity(intent); 
    } 
     }); 

    } 
} 

Ve main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#000000" 

> 

<WebView 
     android:id="@+id/webview" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="none" 

/> 

<Button 
    android:id="@+id/new_button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:text="Refresh" 
/> 





</RelativeLayout> 

Sadece aktivite sonrası aktiviteyi yeniden istifleme fikrini sevmiyorum olduğunu. Web sayfasını yenilemenin daha kolay bir yolu olmalı. Lütfen yardım et. Ayrıca mWebView.reload() diyoruz ama bu reposts farkında olabilir) böylece tam kod

newButton.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
    dgeActivity.this.mWebView.loadUrl("http://www.websitehere.php"); 
    }}); 

2 olacağını

mWebView.loadUrl("http://www.websitehere.php"); 

: :) durumda

cevap

49

1) Aynı URL'yi yeniden yüklemek istiyor İstek POST ise bir sayfa, bu nedenle yalnızca GET ile doğru şekilde çalışır.

+4

SİZ SOOOO ROCK !!! Çok teşekkür ederim. Mükemmel çalıştı! WHOO HOOOO !!!! :) – cdg

+0

Şimdi sadece bir widget'a dönüştürebilirsem ....: D – cdg

+0

Josh cevap doğru olanıdır. Aynı URL’yi yeniden yüklemeye devam edecek. –

68

Bunu en iyi çözüm sadece webView.loadUrl("javascript:window.location.reload(true)"); yapmaktır

+5

reload() görünmüyor () – larham1

+0

@ larham1 doğru mu, hangi yöntem işe yarayacak? –

34

yaptığı da budur Bu bir mWebView.reload(); diyebiliriz. Bu, tüm sürümlerde çalışmalı ve yeni geçmiş girişleri sunmuyor.

+4

Güzel çözüm! Ancak bu, WebView widget'ınızda JavaScript'i 'yourWebView.getSettings() ile ayarlamanızı gerektirir. SetJavaScriptEnabled (true);' –

+0

Bunun en iyi yanıt olduğunu düşünüyorum. Gerçekten doğru en iyi cevaba dayanarak url belirtmeniz gerekmediğinden. – Ryan

9

Bu benim için çalıştı. Sadece onCreate metode altına

Button button = (Button) findViewById(R.id.reload_btn); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      web.loadUrl("javascript:window.location.reload(true)");    
     } 
    }); 

Bu Web görünümü nedense WebView.reload için

web.loadUrl("javascript:window.location.reload(true)"); 
-3

Evet() bir web sitesi yeniden bir koddur başarısız olursa çökertmesidir Daha önce yüklemek için (geçmişi ele alır şekilde bir şey). Bu, web sayfamı yenilemek için kullandığım kod. Ben şimdiki WebView URL ortak kullanım değil Yenileniyor self.url

# 1: Pause timeout and page loading 

self.timeout.pause() 
sleep(1) 

# 2: Check for internet connection (Really lazy way) 

while self.page().networkAccessManager().networkAccessible() == QNetworkAccessManager.NotAccessible: sleep(2) 

# 3:Try again 

if self.url == self.page().mainFrame().url(): 
    self.page().action(QWebPage.Reload) 
    self.timeout.resume(60) 

else: 
    self.page().action(QWebPage.Stop) 
    self.page().mainFrame().load(self.url) 
    self.timeout.resume(30) 

return False 
3

geçerli url saklayın.
Böyle bir senaryoda bu kullandı: kullanıcı WebView etkinliğine geri gelip başka bir etkinliğe ve kullanıcıya gittiğinde böyle geçerli URL'yi yeniden: Ayrıca WebView reload() fonksiyonunu kullanabilirsiniz

public class MyWebviewActivity extends Activity { 
    WebView mWebView; 
    .... 
    .... 
    .... 
    @Override 
    public void onRestart() { 
      String url = mWebView.getUrl(); 
      String postData = MyUtility.getOptionsDataForPOSTURL(mContext); 
      mWebView.postUrl(url, EncodingUtils.getBytes(postData, "BASE64")); 
    } 
} 

. Ancak, web görüntülemesini postUrl() ile yüklediyseniz, mWebView.reload();'un çalışmadığını unutmayın. Bu aynı zamanda

String webUrl = webView.getUrl(); 
mWebView.loadUrl(webUrl); 
2

bu deneyin çalışır:

mWebView.loadUrl(mWebView.getUrl().toString()); 
+0

veya "mWebView.reload()". –

-4

Neden bu denemek için?

Swift kodu sınıf içinde çağırmak için:

self.mainFrame.reload() 

veya harici çağrı

myWebV.mainFrame.reload()