Расширитель хода Android, способный отображать, но не скрывать программно

Я пытаюсь указать счетчик прогресса, как это было в моем файле testLayout.xml, а затем программно отображать и скрывать его, как я сделал в приведенном ниже коде активности. Однако происходит то, что индикатор прогресса покажет, но он никогда не исчезает, хотя у меня есть setProgressBarVisibility (false); в конце. Есть идеи? Спасибо за ввод

макет / testLayout.xml

<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/ButtonNew" android:text="New" android:layout_alignParentBottom="true" /> <ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/list" android:layout_alignParentTop="true" android:layout_above="@id/ButtonNew" /> <ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:id="@+id/progressBar1" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true"></ProgressBar> </RelativeLayout> 

TestActivity.java

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.testLayout); setProgressBarVisibility(true); try { Thread.sleep(5000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } setProgressBarVisibility(false); } 

В вашем коде есть проблема, потому что ваш вызов Thread.sleep заставит onCreate ждать 5 секунд, прежде чем продолжить. Вы никогда не должны выполнять вызов Thread.sleep в основном потоке пользовательского интерфейса, так как это приведет к тому, что приложение не ответит на это время. Теперь, что касается ProgressBar, кажется, что вы неправильно используете setProgressBarVisibility с вашим xml-файлом. Эти функции должны использоваться для ProgressBar, которые содержатся в строке заголовка. Вам нужно просто использовать findViewById (R.id.progressBar1) .setVisibility (View.Gone), чтобы скрыть или View.Visible для показа. Но если оба этих вызова выполняются внутри onCreate, вы увидите только тот, который был вызван последним. Это связано с тем, что пользователю не показывается ui, пока активность не вернется из onResume и onCreate.

Intereting Posts