如何为fragment设置listadapter

时间:2014-06-16 11:55:23

标签: java android android-fragments

我的main.xml文件中有两个framelayout。我将framelayout添加到扩展Fragment的类中。我的主类扩展了FragmentActivity,这是它的Oncreate方法:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    FragmentManager fm =getFragmentManager();
    FragmentTransaction ft=fm.beginTransaction();
    Fragment f=new Freg1();
    Fragment f2=new Freg1();
    ft.add(R.id.frame1, f);
    ft.add(R.id.frame2, f2);
    ft.commit();
    tf=Typeface.createFromAsset(this.getAssets(),"font/Byekan.ttf" );
    tv1=(TextView) findViewById(R.id.textView1);
    tv1.setTypeface(tf);
    Log.i(TAG,"1");
    lv1=(ListView) findViewById(R.id.listView1);
    lv2=(ListView) findViewById(R.id.listView2);
    Log.i(TAG,"2");
    List<String> stringList = new ArrayList<String>(Arrays.asList(s1));
    Log.i(TAG,"3");
    ListAdapter listAdapter = new CustomListAdapter(MainActivity.this , R.layout.custom_list ,stringList);
    Log.i(TAG,"4");
    lv1.setAdapter(listAdapter);
    Log.i(TAG,"5");
    lv2.setAdapter(listAdapter);
    Log.i(TAG,"6");


}

当我运行代码时,它在LOG no4之后崩溃了。这意味着setAdapter()方法不起作用。我该如何解决这个问题?

这是我的logcat资源:

Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0x40a13300)
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.taxitabriz/com.example.taxitabriz.MainActivity}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
        at android.app.ActivityThread.access$600(ActivityThread.java:130)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4745)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.NullPointerException
        at com.example.taxitabriz.MainActivity.onCreate(MainActivity.java:55)
        at android.app.Activity.performCreate(Activity.java:5008)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
        ... 11 more

感谢您帮助我解决问题。

1 个答案:

答案 0 :(得分:0)

您的ListView lv1为空,如您所见:

java.lang.RuntimeException: Unable to start activity ComponentInfo{...}: java.lang.NullPointerException
....
com.example.taxitabriz.MainActivity.onCreate(MainActivity.java:55)

MainActivity的第55行应该是这个电话:lv1.setAdapter(listAdapter);

在尝试为其设置适配器之前,请确保您的listView1包含在布局中并正确初始化。