簡體   English   中英

應用程序崩潰,而不是彈出“日期選擇器”對話框

[英]App crashes instead of Date Picker dialog popping up

我希望單擊EditText時彈出日期選擇器對話框。 我遵循了一些SO帖子和教程,但沒有彈出任何消息,然后一段時間后該應用程序崩潰了。

我不確定這是否是正確的方法,或者我是否缺少某些東西。 任何幫助表示贊賞!

到目前為止,我的代碼是Activity.java onCreate:

inputDate = (EditText) findViewById(R.id.inputDate);
    calendar = Calendar.getInstance();

    final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
            // TODO Auto-generated method stub
            calendar = Calendar.getInstance();
            calendar.set(Calendar.YEAR, year);
            calendar.set(Calendar.MONTH, monthOfYear);
            calendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            updateLabel();
        }

    };

    inputDate.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            new DatePickerDialog(getApplicationContext(), date, calendar
                    .get(Calendar.YEAR), calendar.get(Calendar.MONTH),
                    calendar.get(Calendar.DAY_OF_MONTH)).show();
        }
    });

updateLabel:

private void updateLabel() {

    String myFormat = "MM/dd/yy"; //In which you need put here
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

    inputDate.setText(sdf.format(calendar.getTime()));
}

xml:

<EditText
                    android:id="@+id/inputDate"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="mm / dd/ yyyy"
                    android:imeOptions="actionDone"
                    android:focusable="false"
                    />

錯誤日志:

08-20 17:45:01.082 4892-4892/? E/MotionRecognitionManager: mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@224e570
08-20 17:45:01.092 4892-4892/? E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@c3e00e9
08-20 17:45:01.092 4892-4892/? E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@c3e00e9
08-20 17:45:01.122 4892-4892/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                 Process: com.bluefirelabs.apptiva, PID: 4892
                                                 android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
                                                     at android.view.ViewRootImpl.setView(ViewRootImpl.java:857)
                                                     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:337)
                                                     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
                                                     at android.app.Dialog.show(Dialog.java:350)
                                                     at com.bluefirelabs.apptiva.UserInfoActivity$7.onClick(UserInfoActivity.java:125)
                                                     at android.view.View.performClick(View.java:5702)
                                                     at android.widget.TextView.performClick(TextView.java:10885)
                                                     at android.view.View$PerformClick.run(View.java:22533)
                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                     at android.os.Looper.loop(Looper.java:158)
                                                     at android.app.ActivityThread.main(ActivityThread.java:7229)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
08-20 17:45:01.142 3429-4950/? E/android.os.Debug: ro.product_ship = true
08-20 17:45:01.142 3429-4950/? E/android.os.Debug: ro.debug_level = 0x4f4c
08-20 17:45:01.142 3429-4950/? E/android.os.Debug: sys.mobilecare.preload = false

那是我的,它運作良好:

DatePickerDialogdatePickerDialog = new DatePickerDialog(this, R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
   @Override
   public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
      //Magic happens here
   }
}, nowYear, nowMonth, nowDay);
datePickerDialog.show();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM