簡體   English   中英

無法解析 Fragment RecyclerView 中的“findViewById”方法

[英]Cannot resolve 'findViewById' method in Fragment RecyclerView

我是 android 工作室的新手,我試圖在 Fragment 上創建 RecyclerView。 我正在關注教程,但我仍然收到消息“無法解析”findViewById

我試過做:

RecyclerView recyclerView = (RecyclerView)getView().findViewById(R.id.recyclerView);

但最終收到錯誤:

 Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

這是代碼:

package com.example.app;

import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


public class Articles extends Fragment {



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        NewsList[] myListData = new NewsList[] {
                new NewsList("Article 1", "Some Author"),
                new NewsList("Article2", "Some Author"),
                new NewsList("Article3", "Some Author"),

        };
        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        NewsAdapter adapter = new NewsAdapter(myListData);
        recyclerView.setHasFixedSize(true);
        recyclerView.setAdapter(adapter);

    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        return inflater.inflate(R.layout.fragment_create, container, false);
    }


}

我該如何解決這個問題?

您的視圖尚未膨脹,這就是找不到它的原因。 將您的代碼從onCreate移動到onViewCreated片段生命周期。

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // your view is discoverable here
        RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
    }

添加這些變量:

View root;
RecyclerView recyclerView;

將您的 onCreateView 更改為:

public View onCreateView(@NonNull LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {
    root = inflater.inflate(R.layout.fragment_profile, container, false);
    recyclerView = root.findViewById(R.id.recyclerView);
    return root;
}

最后 - 確保您的 XML 文件中的 recyclerview 具有以下內容:

 android:id="@+id/recyclerView"

對於您的示例,您的列表 (myListDatae) 必須作為字段變量位於 NewsAdapter class 內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM