【发布时间】:2014-05-14 07:22:21
【问题描述】:
我正在将 URL 加载到 WebView 中。这是一个登录页面。当用户通过身份验证时,他会看到一个页面。我此时停止加载并开始另一个活动。
当点击登录按钮时,用户被重定向到第一个 url。我此时开始一个进度对话框。在他到达经过身份验证的页面后,我想停止进度对话框并直接显示新活动。我不希望用户看到经过身份验证的页面。
现在,“进度”对话框在经过身份验证的页面处停止。用户看到它,然后向他展示下一个活动
关于如何实现这一点的任何帮助?
这是我的代码:-
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadUrl(url);
final ProgressDialog progressBar = ProgressDialog.show(Details1.this, "Loading..", "Please wait!");
myWebView.setWebViewClient(new WebViewClient()
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon)
{
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
url= view.getUrl();
redirected= Uri.decode(url);
if(redirected!=null &&redirected.contains("Visited"))
{
myprogressDialog= new Utility.ProgressDialogFragment().newInstance();
myprogressDialog.show(getFragmentManager(), "Wait");
}
}
@Override
public void onPageFinished(WebView view, String url)
{
// TODO Auto-generated method stub
super.onPageFinished(view, url);
url= view.getUrl();
redirected= Uri.decode(url);
if(progressBar!=null && progressBar.isShowing())
{
progressBar.dismiss();
}
if(redirected!=null && redirected.startsWith(endpointHost+"/Authorize/index/"+device))//&& myprogressDialog!=null && myprogressDialog.isVisible())
{
myWebView.stopLoading();
myprogressDialog.dismiss();
String authorizationContentString = myurl;
authorizationContentString =authorizationContentString.replace("|", "%7C");
new AuthenticateDevice(Details1.this, Url).execute(authorizationContentString);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
});
}
private static class ProgressDialogFragment extends DialogFragment
{
public static ProgressDialogFragment newInstance()
{
return new ProgressDialogFragment();
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment_dialog_progress, container, false);
}
}
}
【问题讨论】:
-
你到底需要什么??我不明白你..
-
@Lal 我想在显示经过身份验证的页面后停止进度对话框。这是一个对话框片段。我不希望显示经过身份验证的页面并直接切换到下一个活动。这样在登录后直接向用户显示下一个活动
-
当 onPageStarted() 以特定 url 开始时开始您的新活动,让 webview 到 onPageFinished() 并在那里停止 progDialog 并完成 webview 活动。这样网络视图将位于堆栈中的新活动下,并且网络视图将对用户隐藏。
-
@Sripathi 你能详细说明一下我的代码吗?
-
@user3627247 请看我的帖子。
标签: android url webview progressdialog