0

在我的 MainActivity 类中,我有一个listview_fuellen填充我的列表视图的方法。

public void listview_fuellen(){
        DBHelper db = new DBHelper(this);

    ListView lv = (ListView) findViewById(R.id.lvKinder);
    Cursor c = db.select();
    int count = c.getCount();
    String values[] = new String[count+1];

    List<String> auswahl = new ArrayList<String>();
    int i = 0;
    System.out.println("$$$$$$$$$$$$$$$$$$$$$$$1" + c.getCount());
    while(c.moveToNext())
    { 
        values[i]= c.getString(c.getColumnIndex("name"));
        auswahl.add(c.getString(c.getColumnIndex("name")));
        System.out.println("SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS" + auswahl.get(i).toString());
        i++;
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_black_text,R.id.list_content, auswahl);

    lv.setAdapter(adapter);
}

现在,在我将数据添加到列表视图显示的数据库的另一个类中,我尝试调用此方法。

db.insert(name, zeit, geschlecht);                  
MainActivity ma = new MainActivity();
ma.listview_fuellen();

MainActivity 的构造函数是默认构造函数:

public void MainActivity(){

}

现在,当我执行我的应用程序时,我的方法得到一个 NullpointerException listview_fuellen()

05-07 14:08:17.609: E/AndroidRuntime(25654): FATAL EXCEPTION: main
05-07 14:08:17.609: E/AndroidRuntime(25654): java.lang.NullPointerException
05-07 14:08:17.609: E/AndroidRuntime(25654):    at android.app.Activity.findViewById(Activity.java:1839)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at com.example.unserekinder.MainActivity.listview_fuellen(MainActivity.java:129)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at com.example.unserekinder.NeuesKind$1.onClick(NeuesKind.java:57)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at android.view.View.performClick(View.java:4204)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at android.view.View$PerformClick.run(View.java:17355)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at android.os.Handler.handleCallback(Handler.java:725)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at android.os.Looper.loop(Looper.java:137)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at android.app.ActivityThread.main(ActivityThread.java:5041)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at java.lang.reflect.Method.invokeNative(Native Method)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at java.lang.reflect.Method.invoke(Method.java:511)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-07 14:08:17.609: E/AndroidRuntime(25654):    at dalvik.system.NativeStart.main(Native Method)

有人能告诉我为什么吗?

4

2 回答 2

1

您不使用打开新活动new Activity(),而是使用startActivity(new Intent(...))。更多信息在这里:http: //developer.android.com/training/basics/firstapp/starting-activity.html

于 2013-05-07T12:17:49.173 回答
1

尝试阅读有关活动生命周期的信息

Activity 实例化和方法调用一切都将由 Android 通过生命周期方法处理。

将您的代码onCreate(Bundle savedinstancestate)放在Activity.

当您想导航到第二个活动时intent,请使用

Intent i=new Intent(context,SecondActivity.class);
startActivity(i);
于 2013-05-07T12:18:42.377 回答