2017-06-11 28 views
0

如何將一個可繪製的png分配給ImageView中的Fragment? 我宣佈在選項卡的佈局中的ImageView:Xamarin,將圖像分配給ImageView中的片段

ImageView的

 android:layout_width="fill_parent" 
     android:layout_height="wrap_content " 
     android:layout_rowSpan="2" 
     android:id ="@+id/iv_icon" 

的標籤類是在這裏:

類tabFragment1:V4Fragment

{

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) 
    { 
     var v = inflater.Inflate(Resource.Layout.tabLayout1, container, false); 
     return v; 
    } 

} 

我想從指定文件夾中繪製一個巴紐,這樣的事情:

ImageView的iv_icon = FindViewById(Resource.Id.iv_icon); iv_icon.SetImageResource(Resource.Drawable.ic_weather_cloudy_white_48dp);

如果我把它放在MainActivity的OnCreate()方法(當然,在ViewPager初始化下面),我得到NullRefenceException錯誤(在第二行)。 現在的問題是:我應該在哪個類中放置這些語句?

謝謝!

回答

1

在您的片段OnCreateView一旦你已膨脹的視圖/佈局可以訪問它的UI元素,在你的情況下你的ImageView。

修改這個方法:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) 
{ 
    var v = inflater.Inflate(Resource.Layout.tabLayout1, container, false); 

    ImageView iv_icon = v.FindViewById(Resource.Id.iv_icon); 

    iv_icon.SetImageResource(Resource.Drawable.ic_weather_cloudy_white_48dp); 

    return v; 
} 

希望這helps.-

1

問題在於ImageView的實例化。你不能只調用FindViewById,你必須從片段引用中調用FindViewById。如:

ImageView iv_icon = fragmentName.FindViewById(Resource.Id.iv_icon); 
//fragmentName is the reference to your fragment *after its been inflated* 

拋出異常是因爲您試圖從實例化不當的ImageView中調用SetImageResource。 ImageView爲空,因此拋出了NullReferenceException。

在一個側面說明,從活動視圖將作爲通脹如下:

View v = FindViewById(Resource.Id.X); 

FindViewById是一個方便的方法,這樣你就不必不斷的打電話activityName.FindViewById()。 對於片段,這種便利不存在。

總之,膨脹從一個活動的圖:

View v = FindViewById(Resource.Id.X); 

充氣從片段的視圖:

View v = fragmentName.FindViewById(Resource.Id.X); 
相關問題