Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从其他类调用方法会给出NullPointerException_Java_Android - Fatal编程技术网

Java 从其他类调用方法会给出NullPointerException

Java 从其他类调用方法会给出NullPointerException,java,android,Java,Android,我有一个Activity类,从中调用ListView适配器。在adapter类中,我为每行中的两个按钮提供了onClick方法。当我单击一个按钮时,我会从数据库中删除该行,但我必须在我的Activity类中调用该方法,以便更新UI,但调用该方法的方式如下: MainActivity main = new MainActivity(); main.removeTimer(); 抛出一个NullPointerException。这是我在活动类中的方法: public void removeTime

我有一个Activity类,从中调用
ListView
适配器。在adapter类中,我为每行中的两个按钮提供了
onClick
方法。当我单击一个按钮时,我会从数据库中删除该行,但我必须在我的Activity类中调用该方法,以便更新UI,但调用该方法的方式如下:

MainActivity main = new MainActivity();
main.removeTimer();
抛出一个
NullPointerException
。这是我在活动类中的方法:

public void removeTimer() {
    Cursor result1 = myDb.rawQuery("SELECT * from Timers", null);
    result1.moveToFirst();
    timers.clear();
    names.clear();
    while (result1.isAfterLast() == false) {
        timers.add(result1.getString(result1.getColumnIndex(TIME_COLUMN)));
        names.add(result1.getString(result1.getColumnIndex(NAME_COLUMN)));
        result1.moveToNext();
    }
    timerRow.clear();
    for (int i = 0; i < timers.size(); i++) {
        TimerRow item = new TimerRow(timers.get(i), names.get(i), bRemove,
                bStartStop);
        timerRow.add(item);
    }
    adapter.notifyDataSetChanged();
}
这是我的日志:

02-22 17:46:15.300: E/AndroidRuntime(4508): FATAL EXCEPTION: main
02-22 17:46:15.300: E/AndroidRuntime(4508): Process: com.adrissa.kitchentimer, PID: 4508
02-22 17:46:15.300: E/AndroidRuntime(4508): java.lang.NullPointerException
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.albert.timer.MainActivity.removeTimer(MainActivity.java:115)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.albert.timer.CustomTimerRowAdapter$2$2.onClick(CustomTimerRowAdapter.java:272)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at android.os.Looper.loop(Looper.java:136)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at android.app.ActivityThread.main(ActivityThread.java:5586)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at java.lang.reflect.Method.invokeNative(Native Method)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at java.lang.reflect.Method.invoke(Method.java:515)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at dalvik.system.NativeStart.main(Native Method)

可能是因为你调用的是
main.removeTimer()
,而不是
mainAct.removeTimer()

实际上就是这么简单,我在谷歌上只花了5个小时就找到了这个问题


您不应该执行
MainActivity mainAct=new MainActivity()。框架处理活动的创建。然后如何调用该方法,或者如何从ListViewAdapter更新UI?抱歉,不,这只是一个类型错误,您可以在代码中看到它是正确的。
02-22 17:46:15.300: E/AndroidRuntime(4508): FATAL EXCEPTION: main
02-22 17:46:15.300: E/AndroidRuntime(4508): Process: com.adrissa.kitchentimer, PID: 4508
02-22 17:46:15.300: E/AndroidRuntime(4508): java.lang.NullPointerException
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.albert.timer.MainActivity.removeTimer(MainActivity.java:115)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.albert.timer.CustomTimerRowAdapter$2$2.onClick(CustomTimerRowAdapter.java:272)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at android.os.Handler.dispatchMessage(Handler.java:102)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at android.os.Looper.loop(Looper.java:136)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at android.app.ActivityThread.main(ActivityThread.java:5586)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at java.lang.reflect.Method.invokeNative(Native Method)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at java.lang.reflect.Method.invoke(Method.java:515)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
02-22 17:46:15.300: E/AndroidRuntime(4508):     at dalvik.system.NativeStart.main(Native Method)