简体   繁体   English

android.view.InflateException:二进制XML文件第2行:RecyclerView没有LayoutManager

[英]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.

相关问题 android.view.InflateException:二进制XML文件第0行:膨胀类错误 <unknown> 在下面的API 21的recyclerview中 - android.view.InflateException: Binary XML file line #0: Error inflating class <unknown> in recyclerview for below API 21 android.view.InflateException:二进制XML文件第22行 - android.view.InflateException: Binary XML file line #22 android.view.InflateException:二进制XML文件第10行 - android.view.InflateException: Binary XML file line #10 android.view.InflateException:二进制XML文件第2行: - android.view.InflateException: Binary XML file line #2: android.view.InflateException:二进制XML文件第0行:二进制XML文件第0行:膨胀类片段时出错 - android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment android.view.InflateException:二进制 XML 文件第 9 行:二进制 XML 文件第 9 行:错误膨胀类 - android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class android.view.InflateException:二进制XML文件第7行:二进制XML文件第7行:夸大类片段的错误 - android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class fragment android.view.InflateException:二进制 XML 文件第 2 行:二进制 XML1 文件第 2 行:错误充气 Z3501BB4F2AC9CDC80<unknown></unknown> - android.view.InflateException: Binary XML file line #2: Binary XML file line #2: Error inflating class <unknown> android.view.InflateException:二进制XML文件第6行:二进制XML文件第6行:膨胀类错误 - android.view.InflateException: Binary XML file line #6: Binary XML file line #6: Error inflating class android.view.InflateException:二进制XML文件第0行:二进制XML文件第0行:膨胀类错误<Classname> - android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class <Classname>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM