如何在android Fragment中为webview显示全屏加载微调器?
Posted
技术标签:
【中文标题】如何在android Fragment中为webview显示全屏加载微调器?【英文标题】:How to show full screen loading spinner for webview in android Fragment? 【发布时间】:2014-08-25 06:56:34 【问题描述】:我正在开发一个应用程序,它有一个片段可以在 webview 上显示网站。对于慢速连接,加载网站需要一些时间,并且应用程序会在几秒钟内变为空白,所以我想在我的片段中显示一个全屏加载微调器。我找到了源代码,但我不知道如何在我的扩展片段的类中实现它。
这是我想要在显示网站之前显示全屏加载的片段。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
View V = inflater.inflate(R.layout.fragment_a, container, false);
String url="http://www.hotelsearcher.net/";
Bundle args = getArguments();
if (args != null)
url = args.getString("position");
WebView webView= (WebView) V.findViewById(R.id.webView1);
WebSettings webViewSettings = webView.getSettings();
webViewSettings.setjavascriptCanOpenWindowsAutomatically(true);
webViewSettings.setJavaScriptEnabled(true);
webViewSettings.setPluginState(PluginState.ON);
webView.setWebViewClient(new WebViewClient());
adview =(AdView) V.findViewById(R.id.ads);
Ads.loadAds(adview);
webView.loadUrl(url);
return V;
我发现这是代码:https://gist.github.com/daichan4649/5344979/download#
谁能告诉我应该写什么。实现该功能。
【问题讨论】:
【参考方案1】:在您的onCreateView()
中,您需要显示ProgressBar
,因为您的webView.loadUrl(url)
需要时间来加载您的WebView
上的互联网内容。因此,当您的WebView
完成加载您的内容时,您需要注册回电。你可以这样听:
mWebView.setWebViewClient(new WebViewClient()
public void onPageFinished(WebView view, String url)
// Cancel your ProgressBar here
);
在您的onPageFinished()
内取消您的ProgressBar
,因为您的WebView
已完成加载内容。
工作代码
public class MainActivity extends Activity
private String url = "https://www.google.co.in/";
ProgressDialog pb;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pb = new ProgressDialog(this);
pb.setTitle("Connecting Station");
pb.setMessage("Please Wait....");
pb.setCancelable(false);
pb.show();
WebView webView = (WebView) findViewById(R.id.webView);
WebSettings webViewSettings = webView.getSettings();
webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webViewSettings.setJavaScriptEnabled(true);
webViewSettings.setPluginState(PluginState.ON);
webView.loadUrl(url);
webView.setWebViewClient(new WebViewClient()
public void onPageFinished(WebView view, String url)
pb.dismiss();
);
【讨论】:
请看看这个..应用程序崩溃..docs.google.com/document/d/… @MuhidulHassan 请发布您的 Logcat 以及ProgressBar
代码。
我在这里更新了文档:docs.google.com/document/d/… 请注意,我只想全屏显示加载微调器..
嗨..你找到解决办法了吗?
@MuhidulHassan 是的,您将应用程序的上下文传递给您的ProgressDialog
,而不是传递您的 Actvitiy 的上下文。以上是关于如何在android Fragment中为webview显示全屏加载微调器?的主要内容,如果未能解决你的问题,请参考以下文章
在 Fragment Android Studio 中为解析器 JSON 创建类
在 Adapter 或 Fragment 中为 ContactsContract 设置数据的 MIMETYPE
android ViewPager+Fragment 如何在ViewPager的Activity中获取Fragment中的控件对象