TextView с настраиваемым стилем, вызывающим странное исключение надувания

Я работаю над проектом 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>

Ниже мой стиль для моего текстового просмотра

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

Ниже показано, как я увеличиваю свой XML для отображения в моем представлении списка.

@Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        try
        {
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.android_crash_group_layout, null);

            TextView txtFirstOccurred = (TextView)convertView.findViewById(R.id.txtFirstOccurred);
            txtFirstOccurred.setText(getItem(position).getFirstOccurred());

            TextView txtLastOccurred = (TextView)convertView.findViewById(R.id.txtLastOccurred);
            txtLastOccurred.setText(getItem(position).getLastOccurred());


            return convertView;
        }
        catch (Exception ex)
        {
            Log.e(TAG, ex.toString());
            return null;
        }
    }

Я получаю следующую ошибку:

Кажется, это как-то связано со стилем, как будто я удаляю этот атрибут стиля из текстовых представлений, похоже, он работает нормально.

Я думаю, что

<?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>
, который вы возвращаете, иногда бывает
<style name="CrashGroup">
        <item name="android:singleLine">false</item>
        <item name="android:textSize">@android:style/TextAppearance.Small</item>
        <item name="android:gravity">center_vertical</item>
    </style>
, потому что обработка convertView сложна.


person Boardy    schedule 02.01.2015    source источник
comment
Журнал улова ничего полезного не дает. Его catch (Exception ex) { Log.e(TAG, ex.toString()); return null; }   -  person A.S.    schedule 02.01.2015
comment
android.view.InflateException: Binary XML file line #6: Error inflating class <unknown> не следует использовать _2_ вместо _3_ и третий аргумент _4_   -  person Boardy    schedule 02.01.2015
comment
И не могли бы вы отредактировать свой пост в полном стиле для TextView   -  person A.S.    schedule 02.01.2015
comment
_1_ узор, пожалуйста.   -  person A.S.    schedule 02.01.2015
comment
@В КАЧЕСТВЕ. по-прежнему получаю ту же ошибку, и я исправил форматирование, чтобы показать стиль текстового просмотра   -  person Emmanuel    schedule 02.01.2015
comment
getContext () возвращает контекст? Вы можете это проверить, пожалуйста?   -  person Boardy    schedule 02.01.2015
comment
@В КАЧЕСТВЕ. Он действительно возвращает контекст, его не нуль   -  person Cata    schedule 02.01.2015
comment
Вроде как-то связано с настройкой размера текста. Если я удалю это, все заработает   -  person Boardy    schedule 02.01.2015
comment
Процесс: com.BoardiesITSolutions.CritiMonApp, PID: 1451 java.lang.NullPointerException: попытка вызвать виртуальный метод int android.view.View.getImportantForAccessibility () для ссылки на нулевой объект в 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.onL ayout (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. макет (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.Vi ew.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.java14 ) в 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 ava: 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)   -  person Boardy    schedule 03.01.2015


Ответы (2)


Убедитесь, что у вас есть ценность. Вы можете использовать что-то вроде:

Надеюсь, это поможет.

 @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;
  }

android: textSize Должно быть значение размера. Измените свой стиль следующим образом:

person Orkun Ozen    schedule 19.02.2015

если вы поймаете свое исключение и вернете значение null, в чем будет исключение? показать logcat:

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

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