9

我需要知道,在哪個片段回調方法中,我們應該調用一個Web服務,在返回到片段Web服務之後不應再調用它。從片段類調用Web服務(API)的正確方法

例如。 我有一個片段類MyFragment.java

public class MyFragment extends Fragment { 


    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 

    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_layout, container, 
       false); 

     return rootView; 
    } 

} 

我需要知道我要調用webservice的更新片段的UI,其回調方法。 現在我正在從onCreateView方法調用Web服務。但我需要知道什麼應該是從片段調用Web服務的最佳方式。

回答

4

如果我正確理解你的問題,你想從服務器獲取一些數據,然後通知片段數據已準備好並重新繪製片段,那是否正確?根據該文件here

的onCreate() - 系統中創建的片段時,調用此。在你的實現中,你應該初始化當片段暫停或停止時要保留的片段的基本組件,然後重新開始。

onCreateView() 系統調用這個當它的時間片段繪製它的用戶界面首次。要爲您的片段繪製UI,您必須從此方法返回一個視圖,該方法是片段佈局的根。如果片段不提供UI,則可以返回null。

當您在應用程序的其他位置創建片段時,將調用onCreate()方法。當必須首次繪製片段時,將調用onCreateView(),並且此方法返回一個已創建的View。在你的情況下,你可能會像這樣:

  1. 聲明這個數據和適配器(如果你使用任何)的實例變量(容器)。
  2. onCreate中,初始化所有這些數據(空容器),初始化適配器,然後執行AsyncTask
  3. onCreateView中,準備視圖返回 - 適配器等。所以,現在,一旦AsyncTask將完成,在onPostExecute它調用your_adapter.notifyDataSetChanged()。這將重新繪製片段,因爲適配器將被通知數據已更改(從服務器獲取)。
0

取決於您想要獲取數據的時間。 每次應用程序出現在前臺時,你是否都希望它? 使用onResume() 僅當應用程序第一次啓動時才需要它嗎? 使用onViewCreated(),在onCreateView完成後調用它。