简体   繁体   English

在非主要活动中运行 DatePickerDialog

[英]Run DatePickerDialog in non-main activity

I'm getting an issue like that:我遇到了这样的问题:

2020-06-02 18:22:49.454 1829-1829/com.bartosz.piekny.lprtracker E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.bartosz.piekny.lprtracker, PID: 1829
    android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:765)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:92)
        at android.app.Dialog.show(Dialog.java:330)
        at com.bartosz.piekny.lprtracker.AddNote.onClick(AddNote.java:147)
        at android.view.View.performClick(View.java:6256)
        at android.view.View$PerformClick.run(View.java:24701)
        at android.os.Handler.handleCallback(Handler.java:789)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

While trying to open date picker In non-main activity:尝试在非主要活动中打开日期选择器时:

       context = getApplicationContext();
       dateButton = (TextView) findViewById(R.id.dateTextView);
        final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
                int monthNumber = monthOfYear + 1;
                dateButton.setText(dayOfMonth + "." + monthNumber + "." + year);
                dateTime = LocalDateTime.now().withYear(year).withMonth(monthNumber).withDayOfMonth(dayOfMonth);
                mDateTimeListener.onDateTimeChanged(dateTime);
            }
        };

        dateButton.setOnClickListener( new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                final Calendar c = Calendar.getInstance();
                int mYear = c.get(Calendar.YEAR);
                int mMonth = c.get(Calendar.MONTH);
                int mDay = c.get(Calendar.DAY_OF_MONTH);
                new DatePickerDialog(context, date, mYear, mMonth, mDay).show();
            }
        });

Anyone know what I'm doing wrong?:) I was googling it but all which I've found was related to popups not to time picker.任何人都知道我做错了什么?:) 我在谷歌上搜索它,但我发现的所有内容都与弹出窗口有关,而不是时间选择器。 I want to have a really simple solution.我想要一个非常简单的解决方案。

I've just figured it out.我刚刚想通了。 Instead of calling:而不是调用:

context = getApplicationContext();

I need:我需要:

context = this;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM