2014-12-04 1 views
1

MainActivity로드시 첫 번째 ProgressBar (중간)를 표시 할 수 있습니까? 그리고 UI 요소를 숨 깁니다. ProgressBar가 표시 될 때까지 표시됩니다.MainActivity 실행시 ProgressBar를 볼 수 있습니까?

내 onCreate() 메서드에서 메서드 (인터넷 검사)를 실행하고 ProgressBar를 메서드 실행시까지 표시하고 Background 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

주 활동 전에 왜해야합니까? 볼 수없는 콘텐츠로 활동 시작, 회 전자 표시, 인터넷에 연결되어있는 경우 콘텐츠 표시 –

+0

Murtaza Hussain @ 충분히 명확합니까? 저는 단일 활동 - MainActivity에서 일하고 있습니다. MainActivity.class가로드되면 바로 연관된 레이아웃이 인스턴스화됩니다. –

+0

당신은 안드로이드의 개념을 모르고 있습니다. 어쩌면 대답이 당신을 도울 것입니다. –

답변

3

를 사용하여 사용자 정의 인터페이스를 알립니다진행 상황을 표시/숨기기;

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를 반환합니다. 나는 bluestack을 사용하고있다. –

2

는 레이아웃 XML에 외부 레이아웃에 대한 id를 만들고 findViewById를 사용합니다. 로드 할 때 해당 레이아웃을 숨기십시오 (레이아웃 내의 View도 모두 숨겨 짐).로드가 완료되면 표시하십시오.

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

어떻게

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

는 웹 서비스 호출에 인터페이스를 구현 : 없음 인터넷 연결이 때

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에게 감사드립니다. –

관련 문제