java - Fragment Recyclerview onCreateView、onViewCreated 或 onActivityCreated?

标签 java android android-fragments android-recyclerview fragment-oncreateview

我应该在 onCreateView、onViewCreated 还是 onActivityCreated 中初始化我的 recyclerview?

这 3 个之间有什么区别,我搜索了解释,但有些人说使用 onCreateView 而有些人说使用 onViewCreated 或 onActivityCreated 并且只使用 onCreateView 来扩充布局?

这是我的代码

@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_tab1, container, false);

    recyclerViewSongs = rootView.findViewById(R.id.recyclerViewSongs);

    initRecyclerView();

    Log.e(TAG, "onCreateView called!");

    return rootView;

}

private void initRecyclerView() {
    Main.musicList = Main.songs.songs;

    // Connects the song list to an adapter
    // (Creates several Layouts from the song list)
    allSongsAdapter = new AllSongsAdapter(getContext(), Main.musicList);

    final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());

    recyclerViewSongs.setLayoutManager(linearLayoutManager);
    recyclerViewSongs.setHasFixedSize(true);
    recyclerViewSongs.setAdapter(allSongsAdapter);

    recyclerViewSongs.addOnItemTouchListener(new OnItemClickListeners(getContext(), new OnItemClickListeners.OnItemClickListener() {
            @TargetApi(Build.VERSION_CODES.O)
            @Override
            public void onItemClick(View view, int position) {
                Toast.makeText(getContext(), "You Clicked position: " + position, Toast.LENGTH_SHORT).show();
                if (! Main.songs.isInitialized())
                    return;
                //Start playing the selected song.
                playAudio(position);
            }
        }));

}

最佳答案

onCreateView() 将是最佳选择,因为您正在使用 Fragment。不同之处在于 onCreateView()Fragment 等同于 onCreate() 的 Activity 并在 View 创建期间运行但是 onViewCreated()View 创建之后运行。

并且 onActivityCreated()ActivityonCreate() 方法完成后调用,如您在此处所见:https://stackoverflow.com/a/44582434/4409113

关于java - Fragment Recyclerview onCreateView、onViewCreated 或 onActivityCreated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52522649/

相关文章:

Android Studio - MonkeyTalk 集成 - 问题

android - 将 aSmack 0.8.3 用于 XMPP 聊天应用程序时出现 NoSuchAlgorithmException

android - 同时使用嵌套 fragment 和动画对象

Java 按字符子串对字符串数组进行排序

java - 当数字等于0时,如何跳过流的limit(number)调用?

android - RecyclerView 与 StaggeredGridLayoutManager : variable number of columns and vertically scrollable

android - 我如何从 Activity 中访问共享 View 模型?

android - SherlockFragment 无法转换为 Fragment,我的 Activity 是 SherlockActivty

java - 使用 Spring Boot 资源目录中的系统属性设置 keystore 文件位置

java - 获取元素属性值