Android进度微调器,能够以编程方式显示但不能隐藏

Android进度微调器,能够以编程方式显示但不能隐藏,android,Android,我试图像在testLayout.xml文件中那样指定一个进度微调器,然后像在下面的活动代码中那样以编程方式显示和隐藏它。然而,发生的事情是,进度轮将显示,但它永远不会消失,即使我设置了ProgressBarVisibility(false);最后。有什么想法吗?谢谢你的意见 layout/testLayout.xml 您的代码中有一个问题,因为您的Thread.sleep调用将导致onCreate在继续之前等待5秒。您不应该在主UI线程上执行Thread.sleep调用,因为这将导致应用程序

我试图像在testLayout.xml文件中那样指定一个进度微调器,然后像在下面的活动代码中那样以编程方式显示和隐藏它。然而,发生的事情是,进度轮将显示,但它永远不会消失,即使我设置了ProgressBarVisibility(false);最后。有什么想法吗?谢谢你的意见

layout/testLayout.xml


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

感谢您的回复,所以您提出了另一个问题。假设onCreate()转到internet获取数据,因为activity/view显示来自所述internet站点的数据。在本例中,由于httprequest在oncreate中,因此如何在这里使用进度微调器?有什么想法吗?通过使用AsyncTask(),您可以完全完成所需的任务。您应该在onPreExecute中显示微调器,并在onPostExecute中隐藏它。需要知道的是,您不能从doInBackground修改ui。很好,它现在工作得很好,您也帮助使事情变得更清楚了。再次感谢!
    <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>
    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);
    }