2012-06-20 2 views
0

Я настраиваю простой вид списка, в котором пока не заполнены реальные данные. Тем не менее, при попытке выполнить тест я получаю исключение null-указателя каждый раз. Я не могу понять, что вызывает проблему. Журнал ошибок жалуется на setLayoutParams. Вот мой код:Android ListView Returning Null

public class Groups extends Activity { 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.groups_listviews); 

     ListView lView = (ListView)findViewById(R.id.list_view_1); 
     lView.setLayoutParams(new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, 
       LayoutParams.MATCH_PARENT, R.layout.groups_listviews_row)); 
     lView.setCacheColorHint(0); 
     lView.setAdapter(null); 
     lView.setOnItemClickListener(new OnItemClickListener() 
     { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 

Logcat:

06-20 11:03:27.044: D/dalvikvm(3641): GC_EXTERNAL_ALLOC freed 64K, 43% free 3080K/5379K, external 2357K/2773K, paused 81ms 
06-20 11:03:28.388: D/dalvikvm(3641): GC_EXTERNAL_ALLOC freed 6K, 43% free 3096K/5379K, external 4457K/4816K, paused 28ms 
06-20 11:03:28.442: D/AndroidRuntime(3641): Shutting down VM 
06-20 11:03:28.442: W/dalvikvm(3641): threadid=1: thread exiting with uncaught exception (group=0x40018560) 
06-20 11:03:28.442: E/AndroidRuntime(3641): FATAL EXCEPTION: main 
06-20 11:03:28.442: E/AndroidRuntime(3641): java.lang.RuntimeException: Unable to start activity ComponentInfo{com/com.main.Groups}: java.lang.NullPointerException 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1696) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1716) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.access$1500(ActivityThread.java:124) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:968) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.os.Handler.dispatchMessage(Handler.java:99) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.os.Looper.loop(Looper.java:130) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.main(ActivityThread.java:3806) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at java.lang.reflect.Method.invokeNative(Native Method) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at java.lang.reflect.Method.invoke(Method.java:507) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at dalvik.system.NativeStart.main(Native Method) 
06-20 11:03:28.442: E/AndroidRuntime(3641): Caused by: java.lang.NullPointerException 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at com.main.Groups.onCreate(Groups.java:23) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1660) 
06-20 11:03:28.442: E/AndroidRuntime(3641):  ... 11 more 

Ответ: Я был доступ к ListView некорректного файла макета (list_view_1), спасибо за всю помощь!

ответ

3

Если ошибка вызывает жалобы на setLayoutParams, то обычно это приемник метода (aka ListView), который является нулевым.

Я хотел бы проверить, если

ListView lView = (ListView)findViewById(R.id.list_view_1); 

возвращает нулевое значение.

+0

Похоже, что это возвращает null, я буду смотреть в list_view_1. – Jamesar

+0

Понял, это было, видимо, я обращался к списку (list_view_1) другого файла макета. Спасибо за вашу помощь! – Jamesar

+0

без проблем, рад, что я мог бы помочь;) –

4

Вы передаете null на ваш метод setAdapter(), то есть в результате получается NullPointerException.

lView.setAdapter(null); 

setAdapter() необходим действительный ListAdapter, как это параметр.

Here's пример.

Если вам действительно нужен пустой ListView, просто установите набор данных на вашем адаптере пустым/null вместо того, чтобы установить адаптер в нуль.


EDIT:

Если это не вызывает проблем, то единственный другой компонент, который может бросить NullPointerException может быть вашим ListView.

ListView lView = (ListView)findViewById(R.id.list_view_1); 

Проверьте, есть ли действительно ListView, который идет этим ID в вашем XML.

+0

+1. Просто чтобы добавить к этому. Если вам действительно нужен пустой ListView, просто установите набор данных в вашем адаптере пустым/null вместо того, чтобы установить адаптер в нуль. – dymmeh

+0

@dymmeh просто отредактируйте ответ и добавьте его. :-) –

+0

@ Kazekage Gaara Я так не думаю, что сделал listView и setAdapter (null), и никаких исключений не было. Я не утверждаю, что setAdapter (null) хорошо, я просто говорю, что это не причина проблемы. – Amal

0

Я полагаю, что у меня есть ошибка. Параметр для new FrameLayout.LayoutParams(width, height, gravity) и вместо указания Gravity вы указываете какой-то макет.

Измените последний параметр, используя int, чтобы указать Gravity (например, Gravity.CENTER), и ваша проблема может быть решена.

+0

Я закончил тем, что полностью удалил layoutParams, спасибо, хотя! :) – Jamesar

Смежные вопросы