получение nullPointerExeption при раздувании представления для dialogView [duplicate]

Sed немного уродлив, вы могли бы сделать это элегантно, как это:

hendry@i7 tmp$ cat foo 
bar
candy
car
hendry@i7 tmp$ for i in `cat foo`; do echo ${i}bar; done
barbar
candybar
carbar
45
задан Igor Tyulkanov 14 December 2015 в 06:46
поделиться

2 ответа

Измените <view на <View, потому что view не находится в пустом представлении. Это для пользовательского представления, определенного через class attr, как показано ниже:

<view
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    class="com.your.package.YourCustomView" />

И вы получили

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference

из-за LayoutInflater пытается разобрать class attr:

LayoutInflater Исходный код

//...
View createViewFromTag(View parent, String name, Context context, AttributeSet attrs,
        boolean ignoreThemeAttr) {
    if (name.equals("view")) { // line 724
        name = attrs.getAttributeValue(null, "class"); // line 725
    }

    // Apply a theme wrapper, if allowed and one is specified.
    if (!ignoreThemeAttr) {
        final TypedArray ta = context.obtainStyledAttributes(attrs, ATTRS_THEME);
        final int themeResId = ta.getResourceId(0, 0);
        if (themeResId != 0) {
            context = new ContextThemeWrapper(context, themeResId);
        }
        ta.recycle();
    }

    if (name.equals(TAG_1995)) { // line 738
        // Let's party like it's 1995!
        return new BlinkLayout(context, attrs);
    }
//...
  • В строке 724 он проверяет, что ваш тэг view и получает true
  • Вкл. строка 725 пытается получить класс через class attr и получает null
  • В строке 738 он пытается проверить тэг blink и получает сбой

Кроме того, есть любопытная вещь, разработчики Android добавили пасхальное яйцо, вы можете попробовать:

<view
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    class="blink">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="Some text" />
</view>
145
ответ дан Igor Tyulkanov 16 August 2018 в 01:15
поделиться
  • 1
    Большое вам спасибо, Игорь! Я не уверен, как я пропустил, что у меня не было заглавной буквы. – Mitchell Palermo 14 December 2015 в 22:09
  • 2
    Спасибо manh .. slvd моя проблема .. боролась часами – Beenal 12 March 2016 в 12:36
  • 3
    Удивительный ответ с таким подробным объяснением + бонус. Спасибо чувак – Umar Qureshi 14 June 2016 в 10:49
  • 4
    Это действительно опечатка, которую может сделать любой разработчик. Бог и хорошее подробное объяснение. – Ashay 23 October 2017 в 16:42
  • 5
    Это тоже решило мою проблему! какая глупая ошибка! благодаря! – Riddhi 10 May 2018 в 07:23

Через 2 дня я решил эту проблему использовать View вместо view

<View
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#faf4f4"></View>
18
ответ дан saigopi 16 August 2018 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: