【问题标题】:Setup view inside onCreateView vs onActivityCreated在 onCreateView 与 onActivityCreated 中设置视图
【发布时间】: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


【解决方案1】:

只要有效,您就可以真正使用任何您想要的东西。

但是,我相信onViewCreated() 在技术上是“官方”或推荐的方式来修改和引用创建后的视图。

【讨论】:

  • 我明白了,我看到一些大型应用程序也将它设置在 onCreateView 中。所以在我接受答案之前,我会等待更多人回答。
  • 由于 11 天没有人回答,我怀疑很快会有人回答。所以我会接受这个
猜你喜欢
  • 2011-12-23
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 2012-06-14
  • 2015-05-09
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多