Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我得到一个RecyclerView时,Android fragment抛出NPE_Java_Android_Android Fragments_Android Recyclerview - Fatal编程技术网

Java 当我得到一个RecyclerView时,Android fragment抛出NPE

Java 当我得到一个RecyclerView时,Android fragment抛出NPE,java,android,android-fragments,android-recyclerview,Java,Android,Android Fragments,Android Recyclerview,我正在构建一个包含片段的android应用程序。我在全局变量范围内声明了我的recyclerview,并在片段的OnCreateView()方法中调用findViewById()。这是我的片段类: public class AdoptedPetFragment extends Fragment implements OnRemoveButtonClickListener{ private AdoptedPetAdapter aPetAdapter; private Recycle

我正在构建一个包含片段的android应用程序。我在全局变量范围内声明了我的recyclerview,并在片段的
OnCreateView()
方法中调用
findViewById()
。这是我的片段类:

public class AdoptedPetFragment extends Fragment implements OnRemoveButtonClickListener{
    private AdoptedPetAdapter aPetAdapter;
    private RecyclerView aPetRecyclerView;
    private ArrayList<Integer> adoptedPetIds;

    public AdoptedPetFragment() {}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View v = inflater.inflate(R.layout.fragment_adopted_pet, container, false);
        this.adoptedPetIds = FileHandler.getAdoptedPetIdList();
        this.aPetAdapter = new AdoptedPetAdapter(adoptedPetIds);
        // Inflate the layout for this fragment
        aPetRecyclerView = v.findViewById(R.id.adoptedRecView);
        aPetRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        aPetRecyclerView.setHasFixedSize(true);
        aPetRecyclerView.setAdapter(aPetAdapter);
        aPetAdapter.notifyDataSetChanged();
        return v;
    }
    ...
    //I have a listener to catch a button click event, it works like a charm,
    //I get the petItem as expected.
    @Override
    public void onRemoveButtonClick(Pet petItem) {
        FileHandler.removeAdoptedPet(petItem.getPetId());
        adoptedPetIds = FileHandler.getAdoptedPetIdList(); //It reload the list.

        //Here is the error, it throws NPE.
        aPetRecyclerView.invalidate();
        ....
    }

有什么我错过的吗?我知道我在全局变量中声明了对象,并在
oncreateview()
中分配了对象,所以我认为这应该不会有任何问题。非常感谢。

有时视图在
onCreateView
方法中没有正确初始化。您应该始终在创建的视图中初始化视图。只需移动该方法中的所有内容。如何在不传递RemoveButtonClicklistener的情况下从适配器获取回调reference@AramSheroyan它仍然不起作用,我仍然从中获得NPE:(@KishanMaurya shoot,我从中意识到了一些东西,
OnRemoveButtonClickListener mListener=new-AdoptedPetFragment()
适配器类是罪魁祸首,哈哈。谢谢:)
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.recyclerview.widget.RecyclerView.invalidate()' on a null object reference
        at com.evangunawan.adoptme.Home.AdoptedPetFragment.onRemoveButtonClick(AdoptedPetFragment.java:69)
        at com.evangunawan.adoptme.Controller.AdoptedPetAdapter.lambda$onBindViewHolder$0$AdoptedPetAdapter(AdoptedPetAdapter.java:63)
        ...