2011-11-04 50 views
3

我想指定一个进度微调,因为我已经在我的testLayout.xml文件中完成,然后以编程方式显示和隐藏它,因为我已经在我的活动代码中完成。然而,发生的事情是进度轮将显示,但即​​使我有setProgressBarVisibility(false),它也永远不会消失;最后。有任何想法吗?感谢您的输入Android的进度微调,能够显示,但不能隐藏程序

布局/ 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); 
    } 

回答

7

那么有代码中的问题,因为你的Thread.sleep调用将导致onCreate等待5秒后再继续。您不应该在主UI线程上执行Thread.sleep调用,因为它会导致应用程序在这段时间内无法响应。现在关于ProgressBar,似乎你没有正确使用setProgressBarVisibility和你的xml文件。这些函数应该用于标题栏中包含的ProgressBar。您应该只使用findViewById(R.id.progressBar1).setVisibility(View.Gone)来隐藏或显示View.Visible。但是,如果这两个调用都是在onCreate内完成的,则只会看到最后调用的那个。这是因为直到活动从onResume和onCreate返回之前,用户才真正看到ui。

+0

感谢您的回复,所以您刚刚提出了另一个问题。让我们说,onCreate()去互联网抓取数据,因为活动/视图显示来自所述互联网站点的数据。在这种情况下,由于httprequest处于创建状态,因此如何在此处使用进度微调器?有什么想法吗? – Hoofamon

+0

您可以使用AsyncTask(http://developer.android.com/reference/android/os/AsyncTask.html)来完成您正在寻找的内容。您应该在onPreExecute中显示微调,并将其隐藏在onPostExecute中。要知道的是,你不能从doInBackground修改ui。 – Bobbake4

+0

完美,现在它工作得很好,并且帮助你做得更清晰一些。再次感谢! – Hoofamon