Android在AsyncTask中显示和隐藏视图

时间:2012-06-13 13:57:48

标签: android layout android-asynctask

嗨我有一个AysncTask,我想要加载一个加载视图,而当它完成时会运行隐藏它。有谁知道如何做到这一点?目前它没有显示加载视图。

这是我试过的

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    loadingView = LayoutInflater.from(getBaseContext()).inflate(R.layout.loadingcell,
            null);

    //Check Preferences which sets UI

    checkPreferences();
   PostTask posttask;
   posttask = new PostTask();
   posttask.execute();

}




    @Override
    protected Boolean doInBackground(Void... params) {
        boolean result = false;


        loadFixtures();
        publishProgress("progress");
        loadResultsFeed();
        publishProgress("progress");
        loadNewsFeed();
        publishProgress("progress");
        return result;
    }


    protected void onProgressUpdate(String... progress) {
        StringBuilder str = new StringBuilder();
            for (int i = 1; i < progress.length; i++) {
                str.append(progress[i] + " ");



            }
    }

        @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);
        Log.v("BGThread", "begin fillin data");
         FillData();
         loadingView.setVisibility(View.GONE);
      }
}

loadingcell.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white" 
    android:id="@+id/loadingcell">


    <include
        layout="@layout/header" />

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="87dp" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="115dp"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/progressBar1"
        android:gravity="center"
        android:text="Loading..."
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/blue" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

您没有在代码中使用AsyncTask。使用这样的东西:

private class doSomething extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        //Inflate you view or do anything here before loading stuff
    }

    protected Void doInBackground(Void... urls) {
        //loading stuff
    }

    protected void onProgressUpdate(String... progress) {
        //change your UI - like a progressbar
    }

    @Override
    protected void onPostExecute(String unused) {
        //Hide the progressbar
    }

答案 1 :(得分:0)

您需要拥有Activity的内容 - 您可以使用setContentView设置