2015-07-20 30 views
1

正如標題中提到的,當爲ImageViewTextView賦值時,我會得到一個NullReferenceException設置文本或圖像給出NullReferenceException

以下是錯誤我得到:

07-20 11:33:04.833 I/MonoDroid(11396): UNHANDLED EXCEPTION: 
07-20 11:33:04.843 I/MonoDroid(11396): System.NullReferenceException: Object reference not set to an instance of an object 
07-20 11:33:04.843 I/MonoDroid(11396): at JittersApp.Droid.LayoutCodes.Drinks.listCompare (string,JittersApp.Droid.MainActivity) [0x00043] in d:\Docs\Eamonns App Development\App\App Core\JittersApp\JittersApp\JittersApp.Droid\LayoutCodes\Drinks.cs:61 
07-20 11:33:04.843 I/MonoDroid(11396): at JittersApp.Droid.LayoutCodes.Drinks/<>c__DisplayClass2.<coreDrinks>b__1 (object,Android.Widget.AdapterView/ItemClickEventArgs) [0x00018] in d:\Docs\Eamonns App Development\App\App Core\JittersApp\JittersApp\JittersApp.Droid\LayoutCodes\Drinks.cs:45 
07-20 11:33:04.843 I/MonoDroid(11396): at Android.Widget.AdapterView/IOnItemClickListenerImplementor.OnItemClick (Android.Widget.AdapterView,Android.Views.View,int,long) [0x0000d] in /Users/builder/data/lanes/1879/5f55a9ef/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Widget.AdapterView.cs:283 
07-20 11:33:04.843 I/MonoDroid(11396): at Android.Widget.AdapterView/IOnItemClickListenerInvoker.n_OnItemClick_Landroid_widget_AdapterView_Landroid_view_View_IJ (intptr,intptr,intptr,intptr,int,long) [0x00019] in /Users/builder/data/lanes/1879/5f55a9ef/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Widget.AdapterView.cs:211 
07-20 11:33:04.843 I/MonoDroid(11396): at (wrapper dynamic-method) object.f7f74bf0-78c1-4c81-a8d9-11a0a0130a01 (intptr,intptr,intptr,intptr,int,long) <IL 0x00029, 0x0009b> 
07-20 11:33:04.853 W/dalvikvm(11396): VFY: unable to resolve direct method 44: Ljava/lang/Throwable;.<init> (Ljava/lang/String;Ljava/lang/Throwable;ZZ)V 
07-20 11:33:04.863 W/dalvikvm(11396): threadid=1: thread exiting with uncaught exception (group=0x41a64438) 
An unhandled exception occured. 

我的代碼如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.Graphics; 
using Android.Graphics.Drawables; 

namespace JittersApp.Droid.LayoutCodes 
{ 
    public class Drinks 
    { 
     void listSetUp() 
     { 

     } 
     string[] items = new string[] { "Cat", "Mouse", "Dog" }; 

     public void coreDrinks(MainActivity mainAc) 
     { 

      //Home Click 

      ImageView iv = mainAc.FindViewById<ImageView>(Resource.Id.homeDrinks); 
      iv.Click += delegate 
      { 
       Resuables r = new Resuables(); 
       r.onHomeClick(mainAc); 
      }; 

      IListAdapter la = new ArrayAdapter(mainAc, Android.Resource.Layout.SimpleListItem1, items); 

      ListView lv = mainAc.FindViewById<ListView>(Resource.Id.drinksListView); 
      lv.SetAdapter(la); 

      lv.ItemClick += (object sender, Android.Widget.AdapterView.ItemClickEventArgs e) => 
      { 
       String selectedFromList = lv.GetItemAtPosition(e.Position).ToString(); 
       listCompare(selectedFromList, mainAc); 

      }; 

     } 

     private void listCompare(string selectedFromList, MainActivity av) 
     { 
      Resuables r = new Resuables(); 
      if (selectedFromList == items[0]) 
      { 
       ImageView iv = av.FindViewById<ImageView>(Resource.Id.itemPicture); 
       //iv.SetImageResource(Resource.Drawable.JL); 
       TextView tv = av.FindViewById<TextView>(Resource.Id.itemDes); 
       //tv.SetText(Resource.String.firstItem); 
       TextView price = av.FindViewById<TextView>(Resource.Id.textPrice); 
       //price.SetText(Resource.String.three_pounds); 
       av.SetContentView(Resource.Layout.ItemViewer); 

      } 
     } 



    } 
} 

線57,59和61(註釋行),使得同樣的錯誤。任何想法可能導致這種情況?

這很討厭我,因爲它與網站上的代碼完全相同(禁止事實上它離開MainActivity類,但是如果我按照自己的方式設置它,那應該不重要?)哦和coreDrinks函數從MainActivity類本身調用。

編輯:

XML佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:minWidth="25px" 
    android:minHeight="25px" 
    android:background="#ffa95d5d"> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/linearLayout1"> 
     <ImageView 
      android:src="@drawable/jb" 
      android:layout_width="261.2dp" 
      android:layout_height="103.4dp" 
      android:id="@+id/imageView1" 
      android:layout_marginRight="0.0dp" 
      android:scaleType="fitXY" /> 
     <ImageView 
      android:src="@drawable/basket_shopping_2" 
      android:layout_width="48.5dp" 
      android:layout_height="match_parent" 
      android:id="@+id/imageView2" /> 
    </LinearLayout> 
</LinearLayout> 

MainActivity:

using System; 

using Android.App; 
using Android.Content; 
using Android.Runtime; 
using Android.Views; 
using Android.Widget; 
using Android.OS; 
using JittersApp.Droid.LayoutCodes; 


namespace JittersApp.Droid 
{ 
    [Activity(Label = "JittersApp.Droid", MainLauncher = true, Icon = "@drawable/icon", Theme = "@android:style/Theme.Black.NoTitleBar.Fullscreen")] 
     public class MainActivity : Activity 
     { 

       protected override void OnCreate (Bundle bundle) 
       { 
         base.OnCreate (bundle); 

         // Set our view from the "main" layout resource 
         SetContentView (Resource.Layout.Main); 
      Core(); 
       } 

     public void Core() 
     { 
      //Drinks Button 
      Button dk = FindViewById<Button>(Resource.Id.drinksBtn); 
      dk.Click += delegate 
      { 
       SetContentView(Resource.Layout.Drinks); 
       Drinks dr = new Drinks(); 
       dr.coreDrinks(this); 
      }; 

     } 

     } 
} 

編輯:經過這樣的工作,我發現了錯誤的原因由的setContentView在名單的底部(所以還沒有啓用),並在做這件事情之前,它是空的,直到它。所以我把它移到了函數的頂部。

+0

你還可以提供活動代碼和XML嗎? –

+0

是的 - xml:http://pastebin.com/jjJUUzHw和活動代碼:http://pastebin.com/jF5YySC5 –

+0

請不要使用pastebin。我編輯了這個問題,不使用它。 – Cheesebaron

回答

0

經過如此的工作,我發現錯誤是由setContentView在列表的底部(因此尚未啓用)導致的,並且在此過程中它的所有內容都是空的,直到它爲止。所以我把它移到了函數的頂部。

0

問題很簡單 - 在您的xml中,沒有用戶控件在代碼中查找。例如第51行:「itemPicture」,但沒有這樣的控制她http://pastebin.com/jjJUUzHw 我看到你有兩個佈局 - Resource.Layout.Main和Resource.Layout.Drinks,但你只提交了一個xml,所以可能是我吠叫在錯誤的樹上。

+0

我不知道如何從xml中查看代碼,所以我一直試圖通過main活動並在需要的地方擴展。如果你想我可以分享主要和飲料的xml代碼,但main只是一個鏈接到飲料的按鈕,這是一個列表視圖,它試圖設置項目查看器上的值,然後顯示它 –

+0

你能分享整個項目嗎?例如在GitHub上? –

+0

你已經得到了所有的代碼欄,這是不重要的,因爲它所做的全部內容都是在圖像被點擊時發送的,以及上面提到的兩個xml –

相關問題