ProgressBar不会出现并显示任何进展

时间:2013-04-28 03:05:34

标签: android android-progressbar

我现在已经尝试了一段时间,看过几篇SO帖子,并进入了这个阶段。我确信我非常接近它的工作,但我遗漏了一些非常基本的东西。

以下活动的代码片段

public class SearchResultsMap extends MapActivity {
....
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.searchresultsmap);
    ...
        busy = (LinearLayout) findViewById(R.id.busy);
        busy.bringToFront();

        progressBar = (ProgressBar) findViewById(R.id.progressBar) ;
        progressBar.bringToFront() ;

        searchResponse = (HashMap<Integer, CustomJourneyUserInformation>) this.getIntent()
            .getSerializableExtra("searchResponse");
        new GetProviderAndUserDetails(this).execute(null); 
>>edit1  progressBar.setMax(searchResponse.size());
>>edit1  progressBar.setProgress(0) ;
    ...
    }

    //Inner Class, type AsyncTask
    public class GetProviderAndUserDetails extends AsyncTask<String, Integer, Object> {

    public GetProviderAndUserDetails(Activity mapActivity) {
        this.mapActivity = mapActivity;
    }

    protected void onPreExecute() {
        busy.setVisibility(View.VISIBLE);
        setProgressBarVisibility(true) ;
        setProgressBarIndeterminate(true) ;
        setProgressBarIndeterminateVisibility(true) ;
    }
    @Override
    protected void onProgressUpdate(Integer... progress) {
        if (searchActivity != null) {
            searchActivity.setProgress(progress[0]);
>>edit1     progressBar.setProgress(progress[0]) ;
        }
    }
    @Override
    protected Object doInBackground(String... args) {
         ...
         //for loop, i
         publishProgress(i) ;
         //end for loop
         ...
    }
    protected void onPostExecute(Object result) {
        super.onPostExecute(result);
        busy.setVisibility(View.GONE);
        setProgressBarVisibility(false) ;
        setProgressBarIndeterminate(false) ;
        setProgressBarIndeterminateVisibility(false) ;
        ...
    }
}

布局XML文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/busy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:visibility="visible" >

        <ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleLarge"
            android:indeterminateOnly="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp" />
    </LinearLayout>

    .....

    <com.google.android.maps.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/searchMap"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/tip"
        android:layout_alignParentTop="true"
        android:apiKey="mykey"
        android:clickable="true" />

    ....

</RelativeLayout>

设备结果:无法上传到stackoverflow。一些SO问题。

searchresults image

2 个答案:

答案 0 :(得分:1)

您正在调用setProgressBarIndeterminate()及其相关功能,这些功能会对您的活动标题起作用,而不会影响您布局中的进度条。

请改为使用progressBar.setIndeterminate()和朋友。

编辑:如果您想要一个进度条而不是不确定的进度指示器,请使用setIndeterminate(false)

答案 1 :(得分:0)

最终将xml中的样式设置为progressBarStyleHorizontal。似乎progressBarStyleLarge无法显示进度。

此外,不确定的事情也有所帮助。