Android 自定义样式的TextView导致奇怪的充气异常

Android 自定义样式的TextView导致奇怪的充气异常,android,listview,android-listview,layout-inflater,inflate-exception,Android,Listview,Android Listview,Layout Inflater,Inflate Exception,我正在做一个Android项目,我正在创建一个自定义列表视图。列表视图包含多个文本视图,我正在为我的文本视图创建一个样式,这样我就不必一次又一次地重复相同的样式 下面是我的布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"

我正在做一个Android项目,我正在创建一个自定义列表视图。列表视图包含多个文本视图,我正在为我的文本视图创建一个样式,这样我就不必一次又一次地重复相同的样式

下面是我的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/txtFirstOccurred"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="@style/CrashGroup"/>

    <TextView android:id="@+id/txtLastOccurred"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        style="@style/CrashGroup"/>
</LinearLayout>
我得到的错误是:

流程:com.BoardiesITSolutions.CritiMonApp,PID:1451 java.lang.NullPointerException:尝试在null上调用虚拟方法“int android.view.view.GetImportEntForAccessibility()” 对象引用 在android.widget.AbsListView.obtainView(AbsListView.java:2360) 位于android.widget.ListView.makeAndAddView(ListView.java:1864) 在android.widget.ListView.fillDown(ListView.java:698)中 位于android.widget.ListView.fillFromTop(ListView.java:759) 位于android.widget.ListView.layoutChildren(ListView.java:1673) 在android.widget.AbsListView.onLayout(AbsListView.java:2148) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 位于android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 位于android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:508) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:508) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 位于android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:890) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:508) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:508) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:508) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703) 位于android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557) 位于android.widget.LinearLayout.onLayout(LinearLayout.java:1466) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 位于android.widget.FrameLayout.layoutChildren(FrameLayout.java:573) 位于android.widget.FrameLayout.onLayout(FrameLayout.java:508) 位于android.view.view.layout(view.java:15596) 位于android.view.ViewGroup.layout(ViewGroup.java:4966) 在android.view.ViewRootImpl.performLayout上(ViewRootImpl.java:2072) 在android.view.ViewRootImpl.performTraversals上(ViewRootImpl.java:1829) 位于android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054) 在android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779) 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 位于android.view.Choreographer.doCallbacks(Choreographer.java:580) 位于android.view.Choreographer.doFrame(Choreographer.java:550) 在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)中


这似乎与样式有关,就好像我从文本视图中删除了这个样式属性一样,它似乎工作正常

android:textSize必须是一个维度值,所以像这样更改您的样式

<style name="CrashGroup" parent="@android:style/TextAppearance.Small">
        <item name="android:singleLine">false</item>
        <item name="android:gravity">center_vertical</item>
    </style>

假的
中心垂直

我认为您返回的
convertView
有时是
null
,因为处理convertView很棘手

确保你有一个值。您可以使用smth,如:

 @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    TextView text = null;

    if (convertView == null) {
      convertView = inflater.inflate(R.layout.listrow_details, null);
    }

    text = (TextView) convertView.findViewById(R.id.textView1);
    text.setText(children);

    return convertView;
  }

希望有帮助。

如果捕获异常并返回null,那么异常是什么?显示logcat:
catch(Exception ex){Log.e(TAG,ex.toString());returnnull;}
catch日志没有提供任何有用的信息。其
android.view.InflateException:
<style name="CrashGroup" parent="@android:style/TextAppearance.Small">
        <item name="android:singleLine">false</item>
        <item name="android:gravity">center_vertical</item>
    </style>
 @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    TextView text = null;

    if (convertView == null) {
      convertView = inflater.inflate(R.layout.listrow_details, null);
    }

    text = (TextView) convertView.findViewById(R.id.textView1);
    text.setText(children);

    return convertView;
  }