0

実際のデータがまだ入力されていない単純なリスト ビューを設定しています。ただし、テストを実行しようとすると、毎回 null ポインター例外が発生します。問題の原因がわかりません。エラー ログは 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

nullあなたはあなたのメソッドにを渡していますsetAdapter()、それは結果としてNullPointerException

lView.setAdapter(null);

AはパラメータとしてsetAdapter()有効である必要がありListAdapterます。

これが例です。

本当に空のListViewが必要な場合は、アダプタをnullに設定するのではなく、アダプタのデータセットを空/nullに設定するだけです。


編集:

これが問題を引き起こしていない場合、をスローできる他のコンポーネントはNullPointerExceptionあなただけListViewです。

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

ListViewxmlにそのIDを通過するが実際にあるかどうかを確認してください。

于 2012-06-20T17:45:41.043 に答える
3

エラーが setLayoutParams について不平を言う場合、通常は null であるメソッド (別名 ListView) のレシーバーです。

私はかどうかを確認します

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

null を返します。

于 2012-06-20T17:48:00.173 に答える
0

エラーが発生したと思います。new FrameLayout.LayoutParams(width, height, gravity)Gravity を指定する代わりに、ある種のレイアウトを指定するためのパラメーター。

int を使用して Gravity を指定する最後のパラメーターを変更すると (例: Gravity.CENTER)、問題が解決する場合があります。

于 2012-06-20T18:22:17.243 に答える