[英]android.view.InflateException: Binary XML file line #2: RecyclerView has no LayoutManager
Please, help me, i only begin learn Android and really dont know why this dont work. 请帮帮我,我只是开始学习Android,而且真的不知道为什么这行不通。 It just send me error and all.
它只是向我发送错误和所有信息。 I tried change Manifest and activity_main.xml and java file, but nothing happen.
我尝试更改Manifest和activity_main.xml和Java文件,但没有任何反应。 I really want to know why it dont work.
我真的很想知道为什么它不起作用。 I`ll so happy if anyone can advise me something.
如果有人可以给我一些建议,我会很高兴。 Below my code
在我的代码下面
Manifest 表现
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
activity_main.xml activity_main.xml中
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
MainActivity.java MainActivity.java
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fm = getSupportFragmentManager();
MyFragment fragment = new MyFragment();
fm.beginTransaction().add(R.id.activity_main,fragment).commit();
}}
MyFragment.java MyFragment.java
public class MyFragment extends Fragment {
private RecyclerView recyclerView;
private Adapter adapters;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_main,container,false);
recyclerView=(RecyclerView)v.findViewById(R.id.activity_main);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
updateUI();
return v;
}
private void updateUI()
{
List<String> list = new ArrayList<>();
for(int i=0;i<30;i++) list.add("Позиция № "+(i+1));
adapters = new Adapter(list);
recyclerView.setAdapter(adapters);
}
class Holder extends RecyclerView.ViewHolder
{
private TextView textView;
public Holder(View itemView) {
super(itemView);
textView=(TextView)itemView.findViewById(R.id.Text_view);
}
}
class Adapter extends RecyclerView.Adapter<Holder>
{
private List<String> list;
public Adapter(List<String> List) {
this.list=List;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(getActivity());
View v = inflater.inflate(android.R.layout.simple_list_item_1,parent,false);
return new Holder(v);
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public void onBindViewHolder(Holder holder, int position) {
holder.textView.setText(list.get(position));
}
}
here my error: 这是我的错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mrpal.remembertwo, PID: 15159
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.mrpal.remembertwo/com.example.mrpal.remembertwo.MainActivity}: android.view.InflateException: Binary XML file line #2: RecyclerView has no LayoutManager
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
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)
Caused by: android.view.InflateException: Binary XML file line #2: RecyclerView has no LayoutManager
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.example.mrpal.remembertwo.MyFragment.onCreateView(MyFragment.java:27)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1238)
at android.app.Activity.performStart(Activity.java:6340)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2397)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
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)
Caused by: java.lang.IllegalStateException: RecyclerView has no LayoutManager
at android.support.v7.widget.RecyclerView.generateLayoutParams(RecyclerView.java:3906)
at android.view.LayoutInflater.inflate(LayoutInflater.java:502)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.example.mrpal.remembertwo.MyFragment.onCreateView(MyFragment.java:27)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2189)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:757)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2355)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1238)
at android.app.Activity.performStart(Activity.java:6340)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2397)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
It is exactly has the error said. 正是有错误说。
recyclerView.setLayoutManager(new LinearLayoutManager(this));
you might consider trying different contructor arguments such as vertical orientation or reverse = false; 您可以考虑尝试使用其他构造器参数,例如垂直方向或reverse = false;
Please read this: https://guides.codepath.com/android/using-the-recyclerview 请阅读以下内容: https : //guides.codepath.com/android/using-the-recyclerview
Also there are other managers such as grid and staggered grid layout. 另外还有其他管理器,例如网格和交错网格布局。
please observe this View v = inflater.inflate(R.layout.activity_main,container,false); //in the fragment
请遵守此
View v = inflater.inflate(R.layout.activity_main,container,false); //in the fragment
View v = inflater.inflate(R.layout.activity_main,container,false); //in the fragment
to this in the activity,notice any strange? 在活动中对此有所注意吗?
setContentView(R.layout.activity_main);
they indeed the same layout. 他们确实是相同的布局。 do some reflections on your layout for the main view, then the layout you want inflated for the recycler view.
对主视图的布局进行一些思考,然后对回收者视图进行放大的布局。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.