2016-07-14 4 views
0

フラグメントがあり、http応答を受け取った後にそのビューが表示されます。ここでは、私が何をすべきかです:httpレスポンスを受け取った後、Androidのフラグメントのビューを表示しました

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. 
} 

問題は次のようになります。応答が受信されるまで、私は未実装のビューを参照してください。空のボタン、空のImageView、空のスピナーなどが表示されます。応答が受信されるまで白い空白のページを表示したいだけです。

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

あなたのボタンを表示したくない場合やレイアウトに可視性を持たせ、データがロードされた後に可視にすることができます。 – Drv

+0

うん、それは可能です、私は時々それを行います。あなたのアクティビティに存在するもう1つのオプションは、読み込みを表示し、応答にレスポンスオブジェクトをFragmentに渡してビューを移入するときです。 – Amir

答えて

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(); 
0

はあなたのためにlisetnerを設定makeHTTPRequest()またはAsyncTask 例:

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(); 
関連する問題