0

我正在设置一个简单的列表视图,还没有填充真实数据。但是,当尝试运行测试时,我每次都会得到一个空指针异常。我无法弄清楚是什么导致了问题。错误日志抱怨 setLayoutParams。这是我的代码:

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
            }
        });
    }

日志猫:

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

答:我正在访问错误布局文件(list_view_1)的列表视图,感谢所有帮助!

4

3 回答 3

3

您正在将 a 传递null给您的setAdapter()方法,这将导致NullPointerException.

lView.setAdapter(null);

AsetAdapter()需要一个有效ListAdapter的参数。

这是一个例子。

如果您确实需要一个空的 ListView,只需将 Adapter 上的数据集设置为空/null,而不是将适配器设置为 null。


编辑:

如果这不会导致问题,那么唯一可以抛出 a 的其他组件NullPointerException可能是您的ListView.

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

ListView检查您的 xml 中是否确实存在该 ID。

于 2012-06-20T17:45:41.043 回答
3

如果错误抱怨 setLayoutParams,通常它是 null 的方法的接收者(又名 ListView)。

我会检查是否

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

返回空值。

于 2012-06-20T17:48:00.173 回答
0

我想我得到了错误。用于new FrameLayout.LayoutParams(width, height, gravity)而不是指定 Gravity 的参数是指定某种布局。

使用 int 更改最后一个参数以指定 Gravity(例如Gravity.CENTER),您的问题可能会得到解决。

于 2012-06-20T18:22:17.243 回答