收到http响应后,Android显示片段的视图

时间:2016-07-14 05:40:31

标签: android

我有一个片段,我收到http响应后填充其视图。这是我的工作:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    initUI(); // initialize views
    makeHTTPRequest(); // get the data for this fragment
    return fragmentContent;
}

public boolean onServiceSuccess(ConnectionResponse response) {
   // Populate the ui with the data received
   // titleTV.setText(response.getTitle); etc.
}

问题如下:在收到回复之前,我会看到未填充的视图。我的意思是,我看到一个空的Button,空的ImageView,空的微调器等。我只想显示一个白色的空白页(没有任何ui元素),直到收到响应。我认为我可以先使根视图不可见,然后在收到响应时使其可见:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    rootView.setVisibility(View.GONE);
    initUI();
}

public boolean onServiceSuccess(ConnectionResponse response) {
    rootView.setVisibility(View.VISIBLE);
    // ...
}

但我不知道这是不是一个好主意。对于所有碎片,可能需要做太多工作。有更好的方法吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用ProgressDialog直到获取数据。

ProgressDialog progress = new ProgressDialog(this);
                        progress.setTitle("Loading...!!");
                        progress.setMessage("Please Wait...");
                        progress.setCancelable(false);
                        progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);                       
                        progress.show();

和解雇使用:

 progress.dismiss();

答案 1 :(得分:0)

为你makeHTTPRequest()或AsyncTask设置一个lisetner e.g:

  new AsyncTask<Void,Void,Void>(){

        @Override
        protected void onPreExecute() {
            //show a dialog
            super.onPreExecute();
        }

        @Override
        protected Void doInBackground(Void... params) {
            return null;
        }


        @Override
        protected void onPostExecute(Void aVoid) {
            //dialog dismiss();
            super.onPostExecute(aVoid);
        }
    }.execute();