我有一个片段,我收到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);
// ...
}
但我不知道这是不是一个好主意。对于所有碎片,可能需要做太多工作。有更好的方法吗?
感谢。
答案 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();