ImageView выбрасывает исключение NullReferenceException для завышенного LinearLayout - PullRequest
1 голос
/ 01 июня 2011

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

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

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

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

XML-формат Layout:

<?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");

Ответы [ 3 ]

1 голос
/ 01 июня 2011

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

Попробовав несколько разных способов в «Накачке моего вида», я в третий раз воссоздал XML-файл Layout, изменил идентификаторы и заново очистил проект. Каким-то образом в этом процессе моя проблема исчезла, поэтому я поверил, что это была проблема либо с моей настройкой, либо с системой.

Спасибо всем, кто предоставил помощь и руководство!

0 голосов
/ 01 июня 2011

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

String inflater = Context.LAYOUT_INFLATER_SERVICE;
    LayoutInflater li = (LayoutInflater)ctx.getSystemService(inflater);
    v = li.inflate(R.layout.icon, null);
0 голосов
/ 01 июня 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));
...