2015-02-09 5 views
5

में ऐरेलिस्ट में ऑब्जेक्ट जोड़ते समय NullPointerException मैं बेसएडाप्टर के साथ एक सूची दृश्य बनाने की कोशिश कर रहा हूं और मुझे ऑरेलिस्ट को ऑब्जेक्ट जोड़ने के बिंदु पर एक नल ऑब्जेक्ट रेफरेंस त्रुटि मिल रही है।एंड्रॉइड

प्रासंगिक कोड के नीचे है:

public class MainActivity extends ActionBarActivity { 
    int[] icons = {R.drawable.icon01, R.drawable.icon02, R.drawable.icon03, R.drawable.icon04, R.drawable.icon05, R.drawable.icon06, R.drawable.icon07, R.drawable.icon08, R.drawable.icon09, R.drawable.icon10, R.drawable.icon11, R.drawable.icon12}; 
    ListView listView; 
    String[] title, desc; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     listView = (ListView) findViewById(R.id.listView); 

     Resources resources = getResources(); 
     title = resources.getStringArray(R.array.titles); 
     desc = resources.getStringArray(R.array.desc); 

     RT_Adapter rt_adapter = new RT_Adapter(this, title, desc, icons); 
     listView.setAdapter(rt_adapter); 
    } 
} 

class Creator { 
    String a, b; 
    int c; 

    Creator(String d, String e, int f) { 
     this.a = d; 
     this.b = e; 
     this.c = f; 
     Log.d("RT", a +" - "+b+" - "+c); //Position 01 - This is Description 01 - 2130837556 
    } 
} 

class RT_Adapter extends BaseAdapter { 
    Context c; 
    ArrayList<Creator> list; 

    public RT_Adapter(Context context, String[] title, String[] descs, int[] icons) { 
     this.c = context; 
     for (int i = 0; i < title.length; i++) { 
      list.add(new Creator(title[i], descs[i], icons[i])); 
     } 
    } 

    ... 
} 

मैं नीचे लाइन पर त्रुटि मिलती है (पता चला है, जबकि डिबगिंग):

02-09 17:09:05.494  767-767/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.rt.droid.baseadapter01, PID: 767 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rt.droid.baseadapter01/com.rt.droid.baseadapter01.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
      at android.app.ActivityThread.access$800(ActivityThread.java:144) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference 
      at com.rt.droid.baseadapter01.RT_Adapter.<init>(MainActivity.java:71) 
      at com.rt.droid.baseadapter01.MainActivity.onCreate(MainActivity.java:36) 
      at android.app.Activity.performCreate(Activity.java:5933) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
            at android.app.ActivityThread.access$800(ActivityThread.java:144) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 
:

list.add(new Creator(title[i], descs[i], icons[i])); 

नीचे Logcat में वास्तविक त्रुटि है

मुझे समझ में नहीं आ रहा है कि जब मैं नई निर्माता ऑब्जेक्ट को Arr में जोड़ने के लिए बनाता हूं तो मुझे एक नल ऑब्जेक्ट कैसे मिल रहा है ayList।

किसी भी पॉइंटर्स की बहुत सराहना की जाएगी।

+3

एचआईएनटी: क्या आपने सूची शुरू की थी? – Narmer

+1

'ArrayList सूची जैसा दिखता है;' प्रारंभ नहीं किया गया है। –

+0

'this.c = संदर्भ के नीचे; '' this.list = new ArrayList (); 'जोड़ें। –

उत्तर

32

आपने कभी भी ArrayList<Creator> list; प्रारंभ नहीं किया है। तो list.add(new Creator(title[i], descs[i], icons[i])); एक एनपीई फेंक देगा।

बदलें:

ArrayList<Creator> list; 

रहे हैं:

ArrayList<Creator> list = new ArrayList<Creator>; 
1

list रिक्त है के रूप में आप यह प्रारंभ नहीं किया गया है।

public RT_Adapter(Context context, String[] title, String[] descs, int[] icons) { 
       list = new ArrayList<Creator>(); 
       this.c = context; 
       for (int i = 0; i < title.length; i++) { 
        list.add(new Creator(title[i], descs[i], icons[i])); 
       } 
      }