2017-11-23 4 views
1

MainActivity 용 xml 파일에서 내 앱이 일부로드를 수행 할 때마다 표시 할 원형 ProgressBar를 정의했습니다.View.VISIBLE 뒤에 View.GONE을 호출하면 ProgressBar가 표시되지 않습니다. (구형 전화기에서만)

private void refresh() { 
    new AsyncTask<Void, Void, Void>() { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      //show progress bar and blur background 
      progressBar.setVisibility(View.VISIBLE); 
      mainActivityScreen.setAlpha(0.5f); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      /*do something */ 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPreExecute(); 

      //hide progress bar and unblur background 
      progressBar.setVisibility(View.GONE); 
      mainActivityScreen.setAlpha(1.0f); 
     } 
    }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
} 

이 코드를 Nexus 6P에서 실행하면 정확하게 수행됩니다. 새로 고침 버튼을 클릭하면 progressBar가 표시되고 (처음에는 보이지 않음) 앱이 일부 네트워크 작업을 수행하고 progressBar가 끝날 때 다시 사라집니다. 이제 이전 전화에서 동일한 코드를 실행하면 progressBar가 표시되지 않습니다. 처음에는 내가 생각 어쩌면 전화는 진행 막대를로드 할 수 없습니다하지만 나는 그것이 나타난다 (그러나 분명히 다시 사라지지 않음) 라인

progressBar.setVisibility(View.GONE); 

을 떠날 때부터 문제가 아니다. 또한 네트워크 작업이 완료되는 데 약 2 초가 걸리기 때문에 알림 시간이 오래 걸리는 문제는 아닙니다.

누군가 내 최신 휴대 전화에서만 작동하며 이전 휴대 전화에서는 작동하지 않는 이유를 알려주실 수 있습니까? 나는 이것에 미치게 될 것입니다.

도움을 주신 분께 미리 감사드립니다.

편집 : XML : 나는 당신의 오류가 표시

<ProgressBar 
    android:id="@+id/progressBar" 
    style="@android:style/Widget.DeviceDefault.ProgressBar" 
    android:indeterminateTint="@color/black" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:indeterminate="true" 
    android:visibility="gone"/> 
+0

기존 전화의 API 수준은 무엇입니까? –

+0

@AnjalSaneen 23 –

답변

1

;

protected void onPostExecute(Void aVoid) { 
      super.onPreExecute(); 
      //hide progress bar and unblur background 
      progressBar.setVisibility(View.GONE); 
      mainActivityScreen.setAlpha(1.0f); 
     } 

onPostExecute가 끝나면 super.onPreExecute()를 다시 호출합니다.

그 라인 제거

protected void onPostExecute(Void aVoid) { 
      //hide progress bar and unblur background 
      progressBar.setVisibility(View.GONE); 
      mainActivityScreen.setAlpha(1.0f); 
     } 
+0

정말 오류입니다. 감사합니다. 그러나 불행히도 문제를 해결하지는 못합니다. –

+0

progressBar.setVisibility (View.GONE);을 호출하지 않았습니까? 코드의 다른 부분에서? – diegoveloper

+0

예, 저는 그것에 대해 확신합니다. 또한 내가 그랬다면, 그것도 내 최신 전화에서 작동하지 않을 것입니다. –

0

을 나는 AsyncTask를 대신 처리기를 사용하여 문제를 해결했다. 어떻게 든 그것은 모든 휴대폰에서 작동합니다. 어쨌든 당신의 도움에 감사드립니다!

관련 문제