Android 片段内的RecyclerView
以下RecyclerView在“else”中的片段类中运行时崩溃。我得到以下解释:Android 片段内的RecyclerView,android,android-fragments,Android,Android Fragments,以下RecyclerView在“else”中的片段类中运行时崩溃。我得到以下解释: 01-05 18:19:14.922 18178-18178/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.ymoshel.moshel.handcuffed, PID: 18178
01-05 18:19:14.922 18178-18178/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.ymoshel.moshel.handcuffed, PID: 18178
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference
at com.designdemo.uaha.ThreeFragments.onCreateView(ThreeFragments.java:153)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1078)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
at android.support.v4.view.ViewPager.populate(ViewPager.java:952)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:251)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
at android.view.Choreographer.doCallbacks(Choreographer.java:670)
at android.view.Choreographer.doFrame(Choreographer.java:603)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
String strtext = getArguments().getString("edttext");
Log.d(TAG,"strtext: " + strtext);
RecyclerView rv = (RecyclerView) inflater.inflate(
R.layout.fragment_prod_list, container, false);
mActivity = getActivity();
thisFragType = getArguments().getInt(ARG_FRAG_TYPE, 0);
thisFragTypew = getArguments().getInt(ARG_FRAG_TYPE, 1);
Log.d(TAG, "The Frag Type is: " + thisFragType);
Log.d(TAG,"test text "+text);
if (thisFragType==RECENT_ARREST_FRAG||thisFragType==SEARCH_BY_NAME_FRAG) {
setupRecyclerView(rv);
return rv;
}else {
View view = inflater.inflate(R.layout.fragment_rssitem_detail,
container, false);
arrayListCountyNames = new ArrayList<>();
test = getArguments().getString("edttext", "default");
Log.d(TAG, "test: " + test);
TextView textView = (TextView) view.findViewById(R.id.emptyView);
textView.setText(test);
final String shared_size = getDefaults("shared_size", mActivity);
Log.d(TAG,"shared_size: "+shared_size);
String [] listCountys = new String[Integer.parseInt(shared_size)];
for (int i = 0 ;i<Integer.parseInt(shared_size);i++){
final String defaults = getDefaults("shared" + i, mActivity);
listCountys[i]=defaults;
arrayListCountyNames.add(defaults);
Log.d(TAG,"shared: "+defaults);
}
RecyclerView recyclerView;
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
startAdapter(listCountys,listCountys,test );
// Setup layout manager for items
LinearLayoutManager layoutManager = new LinearLayoutManager(mActivity);
// Control orientation of the items
// also supports LinearLayoutManager.HORIZONTAL
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
// Attach layout manager to the RecyclerView
recyclerView.setLayoutManager(layoutManager);
recyclerView.setVisibility(View.VISIBLE);
adapter = new MyPickCountFavoriteArrestAdapter(mActivity,listCountys,listCountys,test);
return view;
}
01-05 18:19:14.922 18178-18178/?E/AndroidRuntime:致命异常:主
进程:com.ymoshel.moshel.handcupled,PID:18178
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)”
位于com.designdemo.uaha.ThreeFragments.onCreateView(ThreeFragments.java:153)
位于android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1078)
位于android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
位于android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
位于android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
位于android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
在android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)上
在android.support.v4.view.ViewPager.populate上(ViewPager.java:1106)
在android.support.v4.view.ViewPager.populate上(ViewPager.java:952)
在android.support.v4.view.ViewPager$3.run(ViewPager.java:251)
在android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
位于android.view.Choreographer.doCallbacks(Choreographer.java:670)
位于android.view.Choreographer.doFrame(Choreographer.java:603)
在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)中
位于android.os.Handler.handleCallback(Handler.java:739)
位于android.os.Handler.dispatchMessage(Handler.java:95)
位于android.os.Looper.loop(Looper.java:148)
位于android.app.ActivityThread.main(ActivityThread.java:5466)
位于java.lang.reflect.Method.invoke(本机方法)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:726)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
字符串strtext=getArguments().getString(“edttext”);
Log.d(标签“strtext:+strtext”);
RecyclerView rv=(RecyclerView)充气机。充气(
R.layout.fragment\u产品列表,容器,假);
mActivity=getActivity();
thisFragType=getArguments().getInt(ARG\u FRAG\u TYPE,0);
thisFragTypew=getArguments().getInt(ARG\u FRAG\u类型,1);
Log.d(标签,“框架类型为:“+thisFragType”);
Log.d(标签,“测试文本”+文本);
如果(thisFragType==最近的逮捕| | | thisFragType==按(姓名)搜索){
设置回收视图(rv);
返回rv;
}否则{
视图=充气机。充气(R.layout.fragment\u rssitem\u详图,
货柜(虚假);;
arrayListCountyNames=新的ArrayList();
test=getArguments().getString(“edttext”,“default”);
日志d(标签“测试:”+测试);
TextView TextView=(TextView)view.findViewById(R.id.emptyView);
setText(测试);
最终字符串shared_size=getDefaults(“shared_size”,mActivity);
Log.d(标签,“共享大小:”+共享大小);
String[]listCountys=新字符串[Integer.parseInt(共享大小)];
对于(int i=0;i我看到其他视图(如“textView”)被适当地找到,并且没有导致NPE。这里需要检查的是id是否为“R.id.recyclerview”实际上正在被找到并返回一个适当的值,现在您已经在片段中,您尝试查找的回收器视图很可能只存在于活动的布局中,您可能也需要在片段中创建一个(或者片段中只有一个,因为这是您已经在活动中显示的内容)。此外,默认方向已经是垂直的,因此您不必在代码中进行设置。请仔细检查布局xml中的id。您是对的,recyclerview id错误,它仍然没有显示recyclerview,但这已经是另一个问题。您需要在recyclerview上显式设置布局管理器。您是r如果recyclerview id错误,您知道我为什么仍然收到错误:01-05 19:07:33.496 22597-22597/?E/recyclerview:未连接适配器;跳过布局您就快到了:)。缺少的是您创建了适配器,但现在需要调用recyclerview.setAdapter(适配器)。当前,recyclerview未检测到告诉其如何操作或填充的适配器,因此不会呈现。