2010-04-01 6 views
33

확인. 나는 어딘가에 보았고 나의 작은 두뇌는 활동을 새로 고치는 더 좋은 방법을 이해할 수 없다. 내가 이해할 수있는 제안은 훌륭 할 것이다. :)WebView를 새로 고치는 더 좋은 방법이 있습니까?

가 여기에 자바 코드 : 여기

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> 

난 그냥 활동 후 활동을 재 적재의 아이디어를 좋아하지 않는다에게 있습니다. webview를 새로 고치는 더 쉬운 방법이 있어야합니다. 도와주세요. 또한 mWebView.reload()를 호출하지만 재 게시를 인식 할 수 있습니다) 그래서 전체 코드가

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

이 될 것

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

: :) 경우

답변

49

1) 동일한 URL을 다시로드하려면 요청이 POST 인 경우 페이지가 GET으로 올바르게 작동합니다.

+4

당신이 SOOOO ROCK! 정말 고맙습니다. 완벽하게 작동했습니다! WHOO HOOOO !!!! :) – cdg

+0

이제 위젯으로 만 변환하면 .... : D – cdg

+0

조쉬의 답변이 맞습니다. 귀하는 동일한 URL을 다시로드합니다. –

68

당신은 가장 좋은 해결책은 단지 webView.loadUrl("javascript:window.location.reload(true)");을하는 것입니다

+5

원래 쿼리가 WebView.postUrl 인 경우 reload()가 작동하지 않는 것 같습니다.) – larham1

+0

@ larham1 당신이 맞습니다, 어떤 방법을 사용할 수 있습니까? –

34

을 수행 무엇 있다는 mWebView.reload();를 호출 할 수 있습니다. 이것은 모든 버전에서 작동하며 새로운 기록 항목을 도입하지 않습니다.

+4

좋은 해결책! 그러나 이것은 'yourWebView.getSettings(). setJavaScriptEnabled (true);와 함께 WebView 위젯에서 JavaScript를 활성화해야합니다. –

+0

이것이 최선의 해결책이라고 생각합니다. 당신이 실제로 올바른 최선의 답변을 기반으로 URL을 지정해야 실 거예요. – 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)");    
     } 
    }); 

이것은 웹보기 어떤 이유로 WebView.reload에 대한

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

예()에서 웹 사이트를 다시로드 할 수있는 코드가 실패 할 경우 충돌이 발생 전에로드 (역사를 처리하는 방식과 관련이 있음). 이것은 내 webview를 새로 고치는 데 사용하는 코드입니다. 나는 현재 웹보기의 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을 저장합니다.
나는 이러한 시나리오에서 이것을 사용 : 사용자가 웹보기의 활동에 돌아와 다른 활동과 사용자에 갈 때 나는이 같은 현재의 URL를 다시로드 : 또한 웹보기의 reload() 기능을 사용할 수 있습니다

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

. 그러나 웹보기에 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() 
관련 문제