2013-05-07 65 views
0

在我的MainActivity类,我有一个方法listview_fuellen,填充我的列表视图。Nullpointer当试图更新列表视图

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) 

谁能告诉我,我为什么?

+0

待办事项MainActivity实现ListActivity?如果是这样,你是不是应该使用Intent来创建它的实例而不是新的? – mach 2013-05-07 12:18:55

+0

因此,您正在创建MainActivity类的新实例,并且您希望更新已经运行的另一个实例? – mihail 2013-05-07 12:18:56

回答

1

尽量了解活动的生命周期

活动实例化和方法调用一切都将搭载Android通过生命周期的方法来处理。

将您的代码放入onCreate(Bundle savedinstancestate)重写方法Activity

当你要浏览到第二活动使用intent

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

但是这意味着我来到我的MainActivity视图,是不是?是不是可以留在我的第二个视图,但更新第一个视图中的列表视图? – user896692 2013-05-07 12:22:54

+0

@ user896692只需回答我的问题,当您在SecondActivity中时,如何看到FirstActivity中的listview?这将回答你的问题。 – Pragnani 2013-05-07 12:24:58

+1

好的。如果用户按下移动电话上的第一个视图刷新的返回按钮,是否有可能? listview_fuellen()方法调用位于onCreate()中,但没有刷新。 – user896692 2013-05-07 12:27:59