是否可以在加载MainActivity时显示第一个ProgressBar(中间)。并隐藏UI元素Upto ProgressBar是可见的。
我想在onCreate()方法上执行一个方法(Internet检查),并且ProgressBar应该是Visible upto方法执行并且还隐藏Background UI元素。
取决于方法执行,我将显示UI或使Dialog<没有互联网>。
简而言之,我的问题是,如何显示ProgressBar,并完全隐藏主要布局UI?方法执行完毕后,progressBar将关闭。
我想要实现的是,
onCreate(...){
progressBar = (ProgressBar)find....
progressBar.setVisibility(View.GONE);
try{
progressBar.setVisibility(View.VISIBLE);
boolean flag=isInternet();
if(flag){
progressBar.setVisibility(View.GONE);
// start my app task
}
}catch(..){
Inflate my Dialog
}
}
但它不起作用..
答案 0 :(得分:3)
使用自定义界面在没有互联网连接时通知:
public interface WebCallListener{
public void onCallComplete(String response);
public void noInternetConnectivity();
}
在Web服务调用上实现接口:
public void getDataFromServer(final WebCallListener webCallListener){
if(isNetwokReachable()){
new AsyncTask<Void,Void,String>(){
@Override
protected String doInBackground(Void... params) {
//write your web service call code here
return null;
}
@Override
protected void onPostExecute(String response) {
super.onPostExecute(response);
webCallListener.onCallComplete(response);
}
}.execute();
}else{
webCallListener.noInternetConnectivity();
}
}
检查互联网连接:
public boolean isNetwokReachable() {
final ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo netInfo = connMgr.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnected()) {
return true;
} else {
return false;
}
}
如何显示/隐藏进度;
pbrLoading.setVisibility(View.VISIBLE);
getDataFromServer(new WebCallListener() {
@Override
public void onCallComplete(String response) {
pbrLoading.setVisibility(View.VISIBLE);
// parse data from response
}
@Override
public void noInternetConnectivity() {
pbrLoading.setVisibility(View.GONE);
}
});
答案 1 :(得分:2)
在布局XML中为外部布局创建id
并使用findViewById
。加载时隐藏该布局(布局中的所有View
也将被隐藏)并在加载完成时显示。
parentLayout.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
boolean flag=isInternet();
if(flag){
progressBar.setVisibility(View.GONE);
// start my app task
parentLayout.setVisibility(View.VISIBLE);
}