ImageView бросает NullReferenceException на Inflated LinearLayout

У меня возникли проблемы с NullReferenceExcpetion в ImageView после того, как я использую LayoutInflater для раздувания родительского макета. Как вы можете видеть в приведенном ниже XML-коде макета, у меня есть два TextView и один ImageView. Я могу ссылаться на оба TextViews просто отлично, но не на ImageView.

Когда я углубляюсь в свойства дочерних представлений раздутого макета, я вижу, что свойство mID обоих TextView правильно, однако mID ImageView равно -1.

Кто-нибудь знает, почему только ImageView отображается как NULL? Я уверен, что это что-то глупое, но я просто не могу понять это. Я также воссоздал XML-файл макета, очистил свой проект и т. д.

Заранее спасибо!!

XML макета:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="vertical">
    <LinearLayout android:layout_width="120px"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">
        <TextView android:id="@+id/weather_forecast_day"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_horizontal"
                  android:textStyle="bold"/>
        <ImageView android:id="@+id/weather_forecast_icon"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
                   android:layout_gravity="center_horizontal"/>
        <TextView android:id="@+id/weather_forecast_temps"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_horizontal"
                  android:textStyle="bold"/>
    </LinearLayout>
</LinearLayout>

Код:

mForecastItem = (LinearLayout)View.inflate(WeatherLookup.this, R.layout.weather_forecast_item, null);

((ImageView)mForecastItem.findViewById(R.id.weather_forecast_icon))
                 .setImageDrawable(getResources().getDrawable(R.drawable.weather_sunny));
((TextView)mForecastItem.findViewById(R.id.weather_forecast_day))
                .setText(forecast.DayOfWeek);
((TextView)mForecastItem.findViewById(R.id.weather_forecast_temps))
            .setText(forecast.High + "\u2109 / " + forecast.Low + "\u2109");

person hooked82    schedule 01.06.2011    source источник
comment
Я собирался предложить вам очистить и перестроить ваш проект. Затем я заметил, что вы сказали, что очистили мой раствор. Если это не означает то же самое, попробуйте очистить и перестроить свой проект.   -  person Ted Hopp    schedule 01.06.2011
comment
Да, я имел в виду проект. Я обновил вопрос, спасибо за внимание.   -  person hooked82    schedule 01.06.2011


Ответы (3)


Я как-то заставил это работать. Я отвечаю на свой вопрос из-за того, что проблема была решена другими способами, которые затем предоставили решения, однако оба ответа Jaydeep и CapDroid работают правильно для раздувания представления.

Попробовав несколько разных способов в Inflating my view, я воссоздал XML-файл макета в третий раз, изменил идентификаторы и повторно очистил проект. Каким-то образом в этом процессе моя проблема исчезла, поэтому я решил, что это проблема либо с моей настройкой, либо с системой.

Спасибо всем, кто помог и подсказал!

person hooked82    schedule 01.06.2011

Попробуйте этот код:

String inflater = Context.LAYOUT_INFLATER_SERVICE;
    LayoutInflater li = (LayoutInflater)ctx.getSystemService(inflater);
    v = li.inflate(R.layout.icon, null);
person Jaydeep Khamar    schedule 01.06.2011

попробуй это...

LayoutInflater inflater;
inflater = activity.getLayoutInflater();
mForecastItem = (LinearLayout)inflater.inflate(
                R.layout.weather_forecast_item, null);



((ImageView)mForecastItem.findViewById(R.id.weather_forecast_icon))
                 .setImageDrawable(getBaseContext().getResources().getDrawable(R.drawable.weather_sunny));
person Niranj Patel    schedule 01.06.2011
comment
Я получаю одинаковые результаты при попытке обоих примеров кода. ImageView по-прежнему имеет значение null. - person hooked82; 01.06.2011