Есть ли лучший способ обновить WebView?

ОК. Я посмотрел ВЕЗДЕ, и мой маленький мозг просто не мог понять лучшего способа обновления активности. Любые предложения, которые я могу понять, были бы замечательными. 🙂

Вот код java:

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> 

Мне не нравится идея только повторной укладки активности после активности. Должен быть более простой способ обновить веб-представление. Пожалуйста помоги. 🙂

Solutions Collecting From Web of "Есть ли лучший способ обновить WebView?"

1) Если вы хотите перезагрузить один и тот же URL-адрес:

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

Поэтому полный код будет

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

2) Вы также можете вызвать mWebView.reload() но помните, что это отправляет страницу, если запрос был POST, поэтому работает только с GET.

Вы можете вызвать mWebView.reload(); Вот что он делает

Лучшее решение – просто сделать webView.loadUrl( "javascript:window.location.reload( true )" ); , Это должно работать на всех версиях и не вводить новые записи истории.

Это сработало для меня.

Просто положить в 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

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

Обновление текущего URL веб-просмотра не является обычным.
Я использовал это в таком сценарии: когда пользователь переходит к другому действию, и пользователь возвращается к активности веб-просмотра, я перезагружаю текущий 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")); } } 

Вы также можете использовать функцию reload() WebView. Но учтите, что если вы загрузили webview с помощью postUrl() , тогда mWebView.reload(); Не работает. Это также работает

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

попробуй это :

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

Да по какой-то причине 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 

Почему бы не попробовать это?

Быстрый код для вызова внутри класса:

 self.mainFrame.reload() 

Или внешний вызов

 myWebV.mainFrame.reload()