【问题标题】:Error inflating class TextView in RecyclerView在 RecyclerView 中膨胀类 TextView 时出错
【发布时间】:2016-03-24 16:35:21
【问题描述】:

我在 Fragment 中有 Recycler View,在 ArrayList 中有数据但是当我运行我的应用程序时,它会如何抛出 InflateException 之类的异常。我尝试了很多,但没有得到任何解决方案。

如果有人能解决那就太好了,我将非常感谢。

这里是 logcat。

com.example.ankitsodha.aroundme E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ankitsodha.aroundme, PID: 9678
    android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class TextView
    at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at com.example.ankitsodha.aroundme.MyRecyclerAdapter.onCreateViewHolder(MyRecyclerAdapter.java:29)
    at com.example.ankitsodha.aroundme.MyRecyclerAdapter.onCreateViewHolder(MyRecyclerAdapter.java:15)
    at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5228)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4453)
    at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363)
    at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
    at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1370)
    at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
    at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)
    at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900)
    at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.support.design.widget.CoordinatorLayout.layoutChild(CoordinatorLayout.java:1037)
    at android.support.design.widget.CoordinatorLayout.onLayoutChild(CoordinatorLayout.java:747)
    at android.support.design.widget.ViewOffsetBehavior.onLayoutChild(ViewOffsetBehavior.java:42)
    at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onLayoutChild(AppBarLayout.java:1156)
    at android.support.design.widget.CoordinatorLayout.onLayout(CoordinatorLayout.java:760)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
    at android.view.View.layout(View.java:16646)
    at android.view.ViewGroup.layout(ViewGroup.java:5440)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
    at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
    at android.view.View.layout(View.java:166

MyRecyclerAdapter.java

    public class MyRecyclerAdapter extends RecyclerView.Adapter<MyRecyclerAdapter.ViewHolder> {

    Context context;
    ArrayList<PlaceModalClass> placeData;

    public MyRecyclerAdapter(Context context, ArrayList<PlaceModalClass> placeData)
    {
        this.context=context;
        this.placeData=placeData;
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_row_item,parent,false);

        ViewHolder viewHolder= new ViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
            holder.tvName.setText(placeData.get(position).getName());
    }

    @Override
    public int getItemCount() {
        return placeData.size();
    }

    static class ViewHolder extends RecyclerView.ViewHolder
    {

        TextView tvName;

        public ViewHolder(View itemView) {
            super(itemView);
            tvName=(TextView)itemView.findViewById(R.id.tvName);
        }
    }
}

recycler_row_item.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tvName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Test"
        android:textSize="?android:attr/textAppearanceLarge"/>        
</LinearLayout>

MyFragment.java 文件

recyclerview=(RecyclerView)view.findViewById(R.id.recyclerview);
recyclerview.setLayoutManager(new LinearLayoutManager(getActivity()));
MyRecyclerAdapter adapter=new MyRecyclerAdapter(getActivity(),placeData);
recyclerview.setAdapter(adapter);

【问题讨论】:

  • 这是完整的堆栈跟踪吗?
  • 是的,如果完整的堆栈跟踪
  • 你能发布你的活动/片段代码吗?您发布的示例看起来不错。

标签: android android-recyclerview fatal-error inflate-exception


【解决方案1】:

在您的 recycler_row_item.xml 中删除以下行。

android:textSize="?android:attr/textAppearanceLarge"

或者用这个替换它:

android:textAppearance="?android:attr/textAppearanceLarge"

【讨论】:

  • 是的,我知道布局管理器,我已经设置了线性布局管理器,但它仍然显示相同的错误
  • 你能把你的recycler_row_item的xml代码贴出来,或者检查一下这个文件的第8行
  • 我已经发布了 recycler_row_item xml 文件,请在上面查看。线性布局内有一个文本视图。
猜你喜欢
  • 2015-04-13
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多