我的WebViewClient总是重新加载它显示的站点。看起来像是频闪镜。首先,它从另一个活动中获取自己的值,然后插入javascript支持的值,并到达“目标”站点。在执行此操作之前,一切正常,但随后它会闪烁。我怎样才能防止这种情况呢?下面是我的代码:
public class Webview extends Activity {
WebView webView;
String site = "xyz.com";
private String bnm, pwd1;
private ProgressBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_view);
webView = (WebView) findViewById(R.id.webView1);
bnm = getIntent().getStringExtra("benutzername");
pwd1 = getIntent().getStringExtra("password");
website(site);
}
public void website(String website) {
website = site;
bar = (ProgressBar) findViewById(R.id.progressBar1);
webView.setVisibility(View.GONE);
bar.setVisibility(View.VISIBLE);
if (!DetectConnection.checkInternetConnection(this)) {
Toast.makeText(getApplicationContext(), "No Internet!",
Toast.LENGTH_LONG).show();
Intent intent = new Intent(Webview.this, MainActivity.class);
startActivity(intent);
} else {
webView.loadUrl(site);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
String user=bnm;
String pwd= pwd1;
view.loadUrl("javascript:document.getElementById('username').value = '"+user+"';document.getElementById('password').value='"+pwd+"';"+"document.getElementById('submit').click();");
view.loadUrl("xyz.com");
bar.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
}
});
}
}
}发布于 2013-12-30 09:39:30
当调用onPageFinished(...)时(页面加载完成后),再次调用view.loadUrl("xyz.com"),这将重新加载页面。您可以创建某种外部计数器来检查是否已经注入了适当的js变量,并且不会再次调用loadUrl(...)。
https://stackoverflow.com/questions/20830999
复制相似问题