Android 在RecyclerView上获取空引用
我试图在一个片段中使用RecyclerView及其适配器。每当我试图打开该片段时,应用程序就会崩溃并引发异常:Android 在RecyclerView上获取空引用,android,android-recyclerview,Android,Android Recyclerview,我试图在一个片段中使用RecyclerView及其适配器。每当我试图打开该片段时,应用程序就会崩溃并引发异常: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget RecyclerView$Adapter)' on a null object reference MyActivity.java: 公共类上层扩展。。。{
Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setAdapter(android.support.v7.widget RecyclerView$Adapter)' on a null object reference
MyActivity.java:
公共类上层扩展。。。{
...
公共静态内部类扩展了CorrectedPreferenceFragment{
私有回收视图组公共回收视图;
私人观点v;
...
@凌驾
公共视图OnCreateViewLayoutFlater充气机、视图组容器、捆绑包保存状态{
v=充气器。充气器。布局。接收者_公共_组,容器,错误;
groupsInCommonRecyclerView=RecyclerView v.findViewByIdR.id.recycler\u视图;
groupsInCommonRecyclerView.SetLayoutManagerNewLinearLayoutManagerTargetActivity;
ArrayList commonGroups=初始化组Common;
GroupsInCommonRecycleViewAdapter GroupsInCommonRecycleViewAdapter=新组InCommonRecycleViewAdapterGetContext,commonGroups;
GroupsInCommonRecycleView.setAdaptergroupsInCommonRecycleViewAdapter;
返回v;
}
}
收件人_common_groups.xml:
getActivity有时返回null。所以我建议您在片段中重写onAttach以获取上下文。
这意味着您的布局管理器由于空上下文而为空,并且未提供给recyclerview。因此,在设置适配器时,它会引发异常。
尝试此操作并发布工作状态的更新
public class upperClass extends ... {
...
public static innerClass extends CorrectedPreferenceFragment ... {
private RecyclerView groupsInCommonRecyclerView;
private View v;
private Context c;
@Override
public void onAttach(Context c) {
super.onAttach(c);
this.c = c; //this is one of the best way to get context of the activity to which the particular activity is associated with
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.recipient_common_groups, container, false);
groupsInCommonRecyclerView = (RecyclerView) v.findViewById(R.id.recycler_view);
LinearLayoutManager lm = new LinearLayoutManager(c);
lm.setOrientation(LinearLayoutManager.VERTICAL);
groupsInCommonRecyclerView.setLayoutManager(lm);
ArrayList<GroupsInCommonItem> commonGroups = initializeGroupsInCommon();
GroupsInCommonRecycleViewAdapter groupsInCommonRecycleViewAdapter = new GroupsInCommonRecycleViewAdapter(c, commonGroups);
groupsInCommonRecyclerView.setAdapter(groupsInCommonRecycleViewAdapter);
return v;
}
}
似乎groupsInCommonRecyclerView在设置布局管理器之后和设置适配器之前的某个地方变为空。从发布的代码中看不明显,因此请尝试使用调试器一步一步地检查代码。我认为您没有使用findViewById在活动中绑定您的recyclerview。。。
请检查。在InitializeGroupsCommon方法中您做了什么?为什么要将内部类声明为静态?用伪数据填充列表。@Vivekmishrate静态关键字是罪魁祸首