所以我有一个项目,其中包含选项卡式活动,其中包含每个选项卡上的listViews
标签1 - 用于浏览标题 选项卡2 - 用于浏览用户单击的标题
我分别放了每个片段的onCreateView方法。
public class ChatHistory extends Fragment {
private ListView mThreadList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Returning the layout file after inflating
return inflater.inflate(R.layout.fragment_chat_history, container, false);
}
}
在每个选项卡上我想添加方法来将数据从firebase调用到每个片段中的列表视图。
我想知道的是,我应该在哪里放置每个片段的逻辑,以便它可以处理数据输入输出?我该怎么说呢。
感谢您的帮助。
答案 0 :(得分:0)
Fragment
与Activity
有类似的生命周期流程。考虑到这一点,放置初始化逻辑的最佳位置是在这些方法中:
onCreate()
onCreateView()
现在,人们会认为onCreateView()
更为可取,因为Android应用程序中的初始化逻辑大部分时间都围绕着UI组件。虽然Activity
中的onCreate()
- 不同,但您无法保证对其有任何访问权。
从这里开始,您可以稍微修改onCreateView()
,使其看起来像这样:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_chat_history, container, false);
// Step 1: Initialize your views (do those nasty findViewById's here).
mThreadList = (ListView) view.findViewById(R.id.your_listview_id);
// Step 2: Do your logic of loading the required data here.
// …
return view;
}
但请记住,在执行Step 2
时不要过度负担UI线程。否则,您可能会触发ANR对话框。
p.s。 ,我的回答似乎过于宽泛,但那是因为您的问题是。如果您可以尝试缩小问题范围,我可以提供更好的答案。 :)
答案 1 :(得分:0)
如果你的所有片段都从firebase中检索数据。最好创建一个baseFragment并将所有逻辑放在一起,并从你想要的任何一个片段中调用它。
因此它在每个片段中使用s amelayout,相同设计和相同的mThreadList。
public abstract class BaseFragment extends Fragment{
public abstract List<YourModelClass> methodToFetchDataFromFireBase(Param 1,Param 2..)//whatever your params are
private ListView mThreadList;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Returning the layout file after inflating
return inflater.inflate(R.layout.fragment_chat_history, container, false);
}
@Override
public void onViewCreated(final View view, Bundle savedInstanceState) {
List<YourModelClass> anyList = methodToFetchDataFromFireBase();
mThreadList.setAdapter(getActivity,anyList );
}
现在,每个片段只需extends
个BaseFragment
。无需使用onCreateView
方法。只需添加onViewCreated
并调用方法