【发布时间】:2018-12-20 22:13:08
【问题描述】:
我真的很好奇在 Fragment 中设置视图的最佳做法是什么。自从我开始为 android 开发以来,这就是我一直在做的事情。
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_fragment, container, false);
ListView listView = view.findViewById(...);
listView.setAdapter(...);
return view;
}
然后我阅读了有关方法 onActivityCreated 并阅读到我需要在其中设置视图而不是 onCreateView 所以我自己编写了一些代码来做同样的事情
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.main_fragment, container, false);
}
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View view = getView();
if(view == null){
throw new NullPointerException("View returned null inside onActivityCreated this shouldn't have happened!");
}
ListView listView = view.findViewById(...);
listView.setAdapter(...);
}
我真的很好奇这里有什么区别?应该使用哪个? android 推荐你用哪一个?
【问题讨论】:
-
@HarounHajem 这不是重复的,我不是在问它们之间的区别。我在问哪个更好。
-
那么你是在问一个基于意见的问题。我们不会质疑 SO,所有基于意见的问题都会被删除或锁定,例如“蓝色比红色好吗?”
-
@HarounHajem 这并不完全正确,这就像说
String += String而不是在循环中使用StringBuilder是基于意见的。我在问推荐哪种方式来设置视图。:) -
两者都设置了视图,但以不同的顺序进行。文档中建议使用后者来设置状态 --> 请参阅此处stackoverflow.com/questions/8041206/…
标签: java android android-fragments android-activity