1

我已经尝试了一段时间,看了一些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问题。

搜索结果图片

4

2 回答 2

1

您正在调用setProgressBarIndeterminate()相关函数,它们作用于活动的标题,而不是布局中的进度条。

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

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

于 2013-04-28T03:09:47.087 回答
0

在 xml 中设置样式progressBarStyleHorizontal终于奏效了。似乎progressBarStyleLarge无法显示进度。

不确定的事情也有帮助。

于 2013-04-28T04:23:19.140 回答