日期选择器的 NullPointerException

发布于 2025-01-01 23:23:18 字数 4822 浏览 2 评论 0原文

我正在尝试从对话框上的日期选择器获取日期。但它因 NullpointerException 而崩溃,我不知道为什么.. 其他一切都工作得很好。所以我只发布日期选择器的相关和书面代码。

我的应用程序的屏幕截图

以下代码片段:

在公共课程中,我初始化了日期选择器:

public class homework extends ListActivity {
    DatePicker date_pick;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.homework);

        //Only some more code for managing database and some functions
    }

    /*** HERE ARE SOME FUNCTIONS AND CODE FOR CREATING THE CONTEXT MENU etc */

    //What to do by clicking the "Hausaufgabe hinzufügen" button
    private Button.OnClickListener add_hw = new Button.OnClickListener(){
    public void onClick(View arg0) {
        mDbHelper.open_database_rw();
        String txt_insert_hw = insert_hw.getText().toString(); 

        if(txt_insert_hw.equals("")){
            doMessage("Keine Eingabe!");
        }else{
            final String INSERT_HW = "INSERT INTO tbl_homework ('hw') VALUES ('=> " + txt_insert_hw + "')";
            db.execSQL(INSERT_HW);
            insert_hw.setText("");

            /***It's crashing here*/
            String date_picker_message= (date_pick.getMonth()+1) +"/"+date_pick.getDayOfMonth()+"/"+date_pick.getYear();
            /****/

            fillData();
        }
    }};

    //Code for dialog
    @Override
    protected Dialog onCreateDialog(int id) {
    Dialog dialog = null;;
    switch(id) {
    case ADD_HW_DIALOG:
     dialog = new Dialog(homework.this);

     dialog.setContentView(R.layout.customlayout_hw);
     dialog.setTitle("Hausaufgabe hinzufügen");

     date_pick= (DatePicker)findViewById(R.id.date_maturity);

     break;
    }
    return dialog;
}
}   

错误代码:

02-01 10:52:33.554: E/AndroidRuntime(230):  Uncaught handler: thread main exiting due to uncaught exception
02-01 10:52:33.574: E/AndroidRuntime(230):  java.lang.NullPointerException
02-01 10:52:33.574: E/AndroidRuntime(230):  at test.marco.notenha.homework$1.onClick(homework.java:175)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.View.performClick(View.java:2364)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.View.onTouchEvent(View.java:4179)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.widget.TextView.onTouchEvent(TextView.java:6541)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.View.dispatchTouchEvent(View.java:3709)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.app.Dialog.dispatchTouchEvent(Dialog.java:643)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.os.Looper.loop(Looper.java:123)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.app.ActivityThread.main(ActivityThread.java:4363)
02-01 10:52:33.574: E/AndroidRuntime(230):  at java.lang.reflect.Method.invokeNative(Native Method)
02-01 10:52:33.574: E/AndroidRuntime(230):  at java.lang.reflect.Method.invoke(Method.java:521)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-01 10:52:33.574: E/AndroidRuntime(230):  at dalvik.system.NativeStart.main(Native Method)
02-01 10:52:33.604: I/dalvikvm(230):        threadid=7: reacting to signal 3
02-01 10:52:33.604: E/dalvikvm(230):        Unable to open stack trace file '/data/anr/traces.txt': Permission denied

I'm trying to get the date from a datepicker on a dialog. But it's crashing with a NullpointerExeption and I don't know why..
Everything other is working really fine. So I only post the relevant and written code for the datepicker.

Screenshot of my app

Following Codesnippets:

In public class I initialised the datepicker:

public class homework extends ListActivity {
    DatePicker date_pick;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.homework);

        //Only some more code for managing database and some functions
    }

    /*** HERE ARE SOME FUNCTIONS AND CODE FOR CREATING THE CONTEXT MENU etc */

    //What to do by clicking the "Hausaufgabe hinzufügen" button
    private Button.OnClickListener add_hw = new Button.OnClickListener(){
    public void onClick(View arg0) {
        mDbHelper.open_database_rw();
        String txt_insert_hw = insert_hw.getText().toString(); 

        if(txt_insert_hw.equals("")){
            doMessage("Keine Eingabe!");
        }else{
            final String INSERT_HW = "INSERT INTO tbl_homework ('hw') VALUES ('=> " + txt_insert_hw + "')";
            db.execSQL(INSERT_HW);
            insert_hw.setText("");

            /***It's crashing here*/
            String date_picker_message= (date_pick.getMonth()+1) +"/"+date_pick.getDayOfMonth()+"/"+date_pick.getYear();
            /****/

            fillData();
        }
    }};

    //Code for dialog
    @Override
    protected Dialog onCreateDialog(int id) {
    Dialog dialog = null;;
    switch(id) {
    case ADD_HW_DIALOG:
     dialog = new Dialog(homework.this);

     dialog.setContentView(R.layout.customlayout_hw);
     dialog.setTitle("Hausaufgabe hinzufügen");

     date_pick= (DatePicker)findViewById(R.id.date_maturity);

     break;
    }
    return dialog;
}
}   

ERROR Code:

02-01 10:52:33.554: E/AndroidRuntime(230):  Uncaught handler: thread main exiting due to uncaught exception
02-01 10:52:33.574: E/AndroidRuntime(230):  java.lang.NullPointerException
02-01 10:52:33.574: E/AndroidRuntime(230):  at test.marco.notenha.homework$1.onClick(homework.java:175)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.View.performClick(View.java:2364)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.View.onTouchEvent(View.java:4179)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.widget.TextView.onTouchEvent(TextView.java:6541)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.View.dispatchTouchEvent(View.java:3709)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.app.Dialog.dispatchTouchEvent(Dialog.java:643)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.os.Handler.dispatchMessage(Handler.java:99)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.os.Looper.loop(Looper.java:123)
02-01 10:52:33.574: E/AndroidRuntime(230):  at android.app.ActivityThread.main(ActivityThread.java:4363)
02-01 10:52:33.574: E/AndroidRuntime(230):  at java.lang.reflect.Method.invokeNative(Native Method)
02-01 10:52:33.574: E/AndroidRuntime(230):  at java.lang.reflect.Method.invoke(Method.java:521)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-01 10:52:33.574: E/AndroidRuntime(230):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-01 10:52:33.574: E/AndroidRuntime(230):  at dalvik.system.NativeStart.main(Native Method)
02-01 10:52:33.604: I/dalvikvm(230):        threadid=7: reacting to signal 3
02-01 10:52:33.604: E/dalvikvm(230):        Unable to open stack trace file '/data/anr/traces.txt': Permission denied

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

萌酱 2025-01-08 23:23:18

看来您的日期选择器是布局 R.layout.customlayout_hw 的一部分,如果是这样,请更改

date_pick= (DatePicker)findViewById(R.id.date_maturity);

date_pick= (DatePicker)dialog.findViewById(R.id.date_maturity);

It seems your datepicker is a part of layout R.layout.customlayout_hw, if so, change

date_pick= (DatePicker)findViewById(R.id.date_maturity);

to

date_pick= (DatePicker)dialog.findViewById(R.id.date_maturity);
蓦然回首 2025-01-08 23:23:18

您的 date_pick 是否从正确的视图中读取?它不在主要活动上,而是在您的对话框上!

date_pick= (DatePicker)dialog.findViewById(R.id.date_maturity);

Is your date_pick read from the correct view? It's not on the main activity, but on your dialog!

date_pick= (DatePicker)dialog.findViewById(R.id.date_maturity);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文