1

我正在开发一个应用程序,当用户单击按钮时,将打开一个新的活动布局。这个新布局包含各种视图。

其中之一是邮政编码EditText。我希望这个邮政编码EditText自动获取用户的邮政编码GPS并填写。为此,我想这样工作:

  1. 用户点击一个按钮。
  2. 加载新布局。
  3. 所有视图都可以完美加载,并且在邮政编码前EditText会显示一个加载按钮,并通过 GPS 自动显示。

我如何处理第三点,即显示加载直到未获取用户邮政编码。

4

1 回答 1

0

以以下代码段为例。不过,您将不得不填写一些空白。

这就是我ProgressBar在我的一个应用程序中显示 a 的方式Activities。它有一个 ListView,您必须将其替换为您自己的内容。

    <LinearLayout
        android:id="@+id/linlaHeaderProgress"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:orientation="horizontal"
        android:visibility="gone" >

        <ProgressBar
            android:id="@+id/pbHeaderProgress"
            style="@style/Spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="2dp" >
        </ProgressBar>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:gravity="left|center"
            android:padding="2dp"
            android:text="Loading...."
            android:textSize="20sp" >
        </TextView>
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:cacheColorHint="@android:color/transparent"
        android:divider="#000000"
        android:dividerHeight="0dp"
        android:fadingEdge="none"
        android:persistentDrawingCache="scrolling"
        android:scrollbars="none" >
    </ListView>

现在,在您将此布局映射到您的 Java 代码中Activity,将LinearLayout linlaHeaderProgress. 请注意,在 XML 本身中,该android:visibility="gone"属性设置为"gone".

如果您使用 AsyncTask 来获取邮政编码,则当该过程发生在 中时doInBackground()ProgressBar通过切换 中的可见性来显示linlaHeaderProgressonPreExecute()如下所示:

@Override
protected void onPreExecute() {

    // SHOW THE PROGRESS BAR (SPINNER) WHILE FETCHING POST DETAILS
    linlaHeaderProgress.setVisibility(View.VISIBLE);
}

onPostExecute(), 中再次像这样切换可见性:

@Override
protected void onPostExecute(Void result) {

    // HIDE THE PROGRESS BAR (SPINNER) AFTER FETCHING THE POST DETAILS
    linlaHeaderProgress.setVisibility(View.GONE);
}

If you are not using an AsyncTask, but are instead doing the processing in a Method, use this at the start of the method: linlaHeaderProgress.setVisibility(View.VISIBLE);. And use this at the end of the method once you have displayed the ZIP code in the EditText: linlaHeaderProgress.setVisibility(View.GONE);

I declare the LinearLayout linlaHeaderProgress globally so I can reuse it wherever required. Let me know if this helps, or if you have any further questions for me.

于 2013-03-15T09:41:56.247 回答