Есть ли лучший способ обновить WebView?
Ok. Я посмотрел ВЕЗДЕ, и мой маленький мозг просто не мог понять лучшего способа обновления активности. Любые предложения, которые я могу понять, были бы замечательными.:)
Вот код 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>
Мне не нравится идея только повторной укладки активности после активности. Должен быть более простой способ обновить веб-представление. Пожалуйста помоги.:)
Ответы
Ответ 1
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.
Ответ 2
Вы можете вызвать mWebView.reload();
Что он делает
Ответ 3
Лучшее решение - просто сделать webView.loadUrl( "javascript:window.location.reload( true )" );
. Это должно работать на всех версиях и не вводить новые записи истории.
Ответ 4
Это сработало для меня.
просто положить в 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 )" );
Ответ 5
попробуйте следующее:
mWebView.loadUrl(mWebView.getUrl().toString());
Ответ 6
Обновление текущего 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"));
}
}
Вы также можете использовать функцию WebView reload()
. Но учтите, что если вы загрузили webview с помощью postUrl()
, то mWebView.reload();
не работает. Это также работает
String webUrl = webView.getUrl();
mWebView.loadUrl(webUrl);
Ответ 7
Да по какой-то причине 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
Ответ 8
Почему бы не попробовать это?
Быстрый код для вызова внутри класса:
self.mainFrame.reload()
или внешний вызов
myWebV.mainFrame.reload()