2010-04-01 13 views
33

ठीक है। मैंने हर जगह देखा है और मेरा छोटा दिमाग सिर्फ एक गतिविधि को ताज़ा करने के लिए एक बेहतर तरीका समझ नहीं सकता है। कोई सुझाव जो मैं समझ सकता हूं वह बहुत अच्छा होगा। :)क्या वेबव्यू रीफ्रेश करने का कोई बेहतर तरीका है?

यहाँ जावा कोड है:

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); 
    } 
     }); 

    } 
} 

और यहाँ 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> 

मैं सिर्फ गतिविधि के बाद गतिविधि फिर से स्टैकिंग का विचार पसंद नहीं है। वेबव्यू रीफ्रेश करने का एक आसान तरीका होना चाहिए। कृपया मदद करे। इसलिए पूर्ण कोड

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

2 होगा

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

) तुम भी mWebView.reload() फोन, लेकिन यह reposts बारे में पता होना कर सकते हैं: :)

उत्तर

49

1) मामले में आप उसी यूआरएल को फिर से लोड करना चाहते हैं एक पृष्ठ अगर अनुरोध POST था, तो केवल GET के साथ सही तरीके से काम करता है।

+4

आप SOOOO रॉक !!! बहुत बहुत धन्यवाद। यह पूरी तरह से काम किया! व्हाउ हुू !!!! :) – cdg

+0

अब अगर मैं इसे केवल विजेट में बदल सकता हूं ....: डी – cdg

+0

जोश का जवाब सही है। आपकी इच्छा एक ही यूआरएल को पुनः लोड करना जारी रखेगी। –

68

आप ऐसा इसलिए है यह

+5

रीलोड() के रूप में अविश्वसनीय रूप से सेट करने के लिए सेट किया है, यदि मूल क्वेरी WebView.postUrl थी () – larham1

+0

@ larham1 आप सही हैं, कौन सी विधि काम करेगी? –

34

क्या करता है सबसे अच्छा समाधान सिर्फ webView.loadUrl("javascript:window.location.reload(true)"); करना है एक mWebView.reload(); कह सकते हैं। यह सभी संस्करणों पर काम करना चाहिए और नई इतिहास प्रविष्टियों को पेश नहीं करता है।

+4

अच्छा समाधान! हालांकि, यह आवश्यक होगा कि आप 'yourWebView.getSettings() के साथ अपने वेब व्यू विजेट में जावास्क्रिप्ट को सक्षम करें। SetJavaScriptEnabled (true);' –

+0

मुझे लगता है कि यह सबसे अच्छा जवाब होना चाहिए। जैसा कि आपको वास्तव में सही सर्वोत्तम उत्तर के आधार पर यूआरएल निर्दिष्ट करने की आवश्यकता नहीं है। – Ryan

9

यह मेरे लिए काम किया।

सिर्फ onCreate metode के नीचे रखा

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)");    
     } 
    }); 

इस कोड है कि वेब दृश्य

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

किसी कारण WebView.reload के लिए हां() में एक वेबसाइट को फिर से लोड कर सकते हैं अगर यह विफल रहा है एक दुर्घटना का कारण बनता है पहले लोड करने के लिए (इतिहास को संभालने के तरीके से कुछ करने के लिए)। यह वह कोड है जिसका उपयोग मैं अपने वेबव्यू को रीफ्रेश करने के लिए करता हूं। मैं रिफ्रेशिंग वर्तमान वेबव्यू के URL की प्रति आम उपयोग नहीं है 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

में वर्तमान यूआरएल की दुकान।
मैं ऐसे परिदृश्य में यह प्रयोग किया है: उपयोगकर्ता किसी अन्य गतिविधि और उपयोगकर्ता वेबव्यू की गतिविधि करने के लिए वापस आने के लिए चला जाता है जब मैं इस तरह वर्तमान URL को फिर से लोड:

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")); 
    } 
} 

तुम भी WebView के reload() फ़ंक्शन का उपयोग कर सकते हैं। लेकिन ध्यान दें कि यदि आपने postUrl() के साथ वेबव्यू लोड किया है, तो mWebView.reload(); काम नहीं करता है। यह भी काम करता है

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

इस प्रयास करें:

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

या 'mWebView.reload() '। –

-4

ऐसा क्यों नहीं की कोशिश के लिए?

स्विफ्ट कोड वर्ग के भीतर कॉल करने के लिए:

self.mainFrame.reload() 

या बाहरी कॉल

myWebV.mainFrame.reload()