1

我在使用LayoutInflater來膨脹父級佈局後,在ImageView上的NullReferenceExcpetion時出現了一些問題。正如你可以在下面的佈局XML中看到的,我有兩個TextView和一個ImageView。我可以很好地引用兩個TextView,但不是ImageView。ImageView在膨脹的LinearLayout上拋出NullReferenceException

當我鑽到到的胖佈局的子視圖屬性,我看到,無論是TextViews的中期財產是正確的,但是的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"); 
+0

我打算建議您清理並重建您的項目。然後我發現你說你「清理了我的解決方案」。如果這並不意味着同樣的事情,那麼請嘗試清理並重建您的項目。 – 2011-06-01 03:48:27

+0

是的,我的意思是項目。我已經更新了這個問題,謝謝你的支持。 – hooked82 2011-06-01 03:53:33

回答

1

我以某種方式得到了這個工作。我正在回答我自己的問題,因爲這個問題已經通過其他解決方案解決了,但Jaydeep和CapDroid的答案都能正確地工作以擴大視圖。

在嘗試多種不同的方式來充氣我的視圖後,我第三次重新創建了佈局XML文件,更改了ID並重新清理了項目。不知何故,在這個過程中,我的問題消失了,所以我被引導認爲這是我的設置或系統的問題。

感謝所有提供幫助和指導的人!

0

試試這個...

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)); 
+0

嘗試兩個代碼示例時,我會得到相同的結果。 ImageView仍然爲空。 – hooked82 2011-06-01 06:11:58

+0

檢查您的佈局名稱.. – 2011-06-01 06:17:44

+0

請參閱我的更新回答 – 2011-06-01 06:29:37

0

試試這個代碼:

String inflater = Context.LAYOUT_INFLATER_SERVICE; 
    LayoutInflater li = (LayoutInflater)ctx.getSystemService(inflater); 
    v = li.inflate(R.layout.icon, null); 
相關問題