代码之家  ›  专栏  ›  技术社区  ›  SamHoque

onCreateView与onActivityCreated中的设置视图

  •  -1
  • SamHoque  · 技术社区  · 7 年前

    我真的很好奇在片段中设置视图的最佳实践是什么。这就是自从我开始为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(...);
    }
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   TheWanderer    7 年前

    你真的可以用你想要的任何东西,只要它有效。

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