2014-12-04 60 views
1

是否有可能在加載MainActivity時顯示第一個ProgressBar(中間)。並隱藏UI元素Upto ProgressBar是可見的。是否可以在啓動MainActivity時查看ProgressBar?

我想對我的onCreate()方法執行一個方法(Internet檢查),並且ProgressBar應該可視爲方法執行並隱藏後臺UI元素。

取決於方法執行,我將顯示UI或使對話框<沒有互聯網>。

總之,我的問題是,我如何顯示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

爲什麼在主要活動之前做?開始一個內容不可見的活動,告訴你微調,如果連接互聯網,顯示你的內容 – 2014-12-04 12:03:31

+0

Murtaza Hussain @我是否清楚了?我正在單個活動 - MainActivity中工作。一旦MainActivity.class加載,關聯的佈局將被實例化。 – 2014-12-04 16:29:32

+0

您不瞭解Android的概念。也許答案會幫助你,雖然他們正在回答我的意思。 – 2014-12-04 16:31:21

回答

3

使用自定義接口通知時,沒有互聯網連接:

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(); 
    } 
} 

檢查Internet連接:

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; 
    } 
} 

如何

public interface WebCallListener{ 
    public void onCallComplete(String response); 
    public void noInternetConnectivity(); 
} 

上的Web服務調用實現接口顯示/隱藏進度;

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); 
    } 
}); 
+0

方法isNetwokReachable()總是返回true,無論Internet是否可用。我正在使用bluestack。 – 2014-12-05 06:07:24

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); 
} 
+0

謝謝@ Blaze Tama。 – 2014-12-05 04:21:06

相關問題