我收到一些关于StaggeredGridLayoutManager中发生NullPointerException的崩溃报告。看起来大约有10%的用户遇到了这个问题。
我有一个非常基本的RecyclerView带有一个基本的适配器,没有什么特别的,我确实试图在我的设备中重现这个错误而根本没有运气。
这是我报告的原始报告:
java.lang.NullPointerException
at android.support.v7.widget.StaggeredGridLayoutManager.recycleFromStart(StaggeredGridLayoutManager.java:1661)
at android.support.v7.widget.StaggeredGridLayoutManager.recycle(StaggeredGridLayoutManager.java:1529)
at android.support.v7.widget.StaggeredGridLayoutManager.fill(StaggeredGridLayoutManager.java:1471)
at android.support.v7.widget.StaggeredGridLayoutManager.scrollBy(StaggeredGridLayoutManager.java:1846)
at android.support.v7.widget.StaggeredGridLayoutManager.scrollVerticallyBy(StaggeredGridLayoutManager.java:1764)
at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:3062)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803)
at android.view.Choreographer.doCallbacks(Choreographer.java:603)
at android.view.Choreographer.doFrame(Choreographer.java:572)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5335)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(NativeStart.java)
我对发生的事情一无所知。我想也许我在布局管理器之前设置了适配器,但是不是,情况并非如此。
我希望有人可以对此有所了解。
提前致谢!
更新
我正在从我的应用程序中复制一些与RecyclerView相关的代码。
此代码来自片段:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
RecyclerView.LayoutManager layout = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)
mRecyclerView = (RecyclerView)view.findViewById(R.id.recyclerView);
mRecyclerView.setLayoutManager(layout);
mRecyclerView.setAdapter(mAdapter);
}
这是来自适配器,特别是设置适配器项的方法:
public void setItems(List<String> items) {
mItems.clear();
mItems.addAll(items);
notifyDataSetChanged();
}
答案 0 :(得分:0)
好吧,看起来像设置布局管理器和onCreateView()中的适配器修复了大多数设备中的问题。不知道会发生什么。
我仍然收到非常相似的崩溃报告,但现在只有奇怪的品牌。
我希望这些信息对未来的其他开发者有所帮助。
<强>更新强>
仍然获得相同数量的相同崩溃报告。这根本不能被视为固定:/
我会一直在寻找修复方法,并且可能会创建一个受此问题影响的示例项目。