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完成后调用它。