Java 当我得到一个RecyclerView时,Android fragment抛出NPE
我正在构建一个包含片段的android应用程序。我在全局变量范围内声明了我的recyclerview,并在片段的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
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)
...