user896692
user896692

Reputation: 2371

Nullpointer when trying to update listview

In my MainActivity class, I have a method listview_fuellen that fills my listview.

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

Now, in a different class where I add data to the database that the listview shows, I tried to call this method.

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

The constructor of MainActivity is a default constructor:

public void MainActivity(){

}

Now, when I execute my app, I get a NullpointerException for my method 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)

Can someone tell me why?

Upvotes: 0

Views: 41

Answers (2)

Pragnani
Pragnani

Reputation: 20155

Try read about Activity life cycle

Activity Instantiation and method calling everything will be handle by Android through life cycle methods.

Place your code in onCreate(Bundle savedinstancestate) overriden method of your Activity.

And when you want navigate to the second Activity use intent to do that

Intent i=new Intent(context,SecondActivity.class);
startActivity(i);

Upvotes: 1

TomTasche
TomTasche

Reputation: 5526

You don't open new Activities using new Activity(), but with startActivity(new Intent(...)) instead. More information here: http://developer.android.com/training/basics/firstapp/starting-activity.html

Upvotes: 1

Related Questions