使用http请求在片段中加载数据
loading data in fragment using http request
我有一个 Fragment
,我想通过发出 HTTP 请求将一些 JSON 数据加载到其中。
在 Activity
中发出请求并将数据传递给 Fragment
或直接在 Fragment
中加载数据的正确做法是什么?
目前,我正在直接在 Fragment
中加载数据,但我一直在检查片段 isAdded()
并且 getActivity()
不是 null
数据加载后以及何时将在片段中显示它。
它根本不会影响片段或 activity,因为请求是在后台完成的。这取决于您的条件,是要在片段出现后立即显示内容,还是可以在片段内等待。例如:- 如果您不想显示片段的视图,那么只需执行请求操作并在 activity 内等待,当您获得结果时,只需移回片段即可。希望对您有所帮助
我相信加载数据属于片段。否则,如果您的 MainActivity 有 5 个片段,您的代码将变得复杂和混乱。
您还可以定义一个 class 来负责加载数据。类似的东西(伪代码!):
public class FragmentCustomerList extends Fragment implements OnCustomersLoadedCallback {
@Override
public void onStart() {
super.onStart();
showLoadingDataView(); // show data loading spinner
DataLoader.instance().loadCustomersASYNC(this);
}
// OnCustomersLoadedCallback
@Overrride
public void onDataLoaded(List<Customer> customers){
hideLoadingDataView(); // hide data loading spinner
showData(customers);
}
}
我有一个 Fragment
,我想通过发出 HTTP 请求将一些 JSON 数据加载到其中。
在 Activity
中发出请求并将数据传递给 Fragment
或直接在 Fragment
中加载数据的正确做法是什么?
目前,我正在直接在 Fragment
中加载数据,但我一直在检查片段 isAdded()
并且 getActivity()
不是 null
数据加载后以及何时将在片段中显示它。
它根本不会影响片段或 activity,因为请求是在后台完成的。这取决于您的条件,是要在片段出现后立即显示内容,还是可以在片段内等待。例如:- 如果您不想显示片段的视图,那么只需执行请求操作并在 activity 内等待,当您获得结果时,只需移回片段即可。希望对您有所帮助
我相信加载数据属于片段。否则,如果您的 MainActivity 有 5 个片段,您的代码将变得复杂和混乱。
您还可以定义一个 class 来负责加载数据。类似的东西(伪代码!):
public class FragmentCustomerList extends Fragment implements OnCustomersLoadedCallback {
@Override
public void onStart() {
super.onStart();
showLoadingDataView(); // show data loading spinner
DataLoader.instance().loadCustomersASYNC(this);
}
// OnCustomersLoadedCallback
@Overrride
public void onDataLoaded(List<Customer> customers){
hideLoadingDataView(); // hide data loading spinner
showData(customers);
}
}