2012-11-06 2 views
0

DatePickerDialog를 사용하여 날짜를 설정하는 앱이 있습니다. 회 전자에서 날짜를 변경하면 위젯에 날짜와 요일이 표시됩니다. 이것은 2.3.3을 가진 samsung 소형에 달릴 때 일어난다. 그러나 htc 1 x에서 4.0.4를 실행하면 날짜와 요일이 컴파일되지 않습니다.DatePickerDialog에 현재 날짜와 요일을 넣는 법

기기 나 Android 버전에 관계없이 날짜와 요일이 항상 위젯에 표시되도록하려면 어떻게해야합니까?

장치 또는 OS에 따라 위젯의 기본 동작을 일관성있게 무시해야하므로 위젯의 기본 동작을 재정의해야합니다. 감사합니다

@Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case DATE_DIALOG_ID: 
      // set date picker as current date 

      return new DatePickerDialog(this, datePickerListener, year, month, day); 
     } 
     return null; 
    } 

    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 

     // when dialog box is closed, below method will be called. 
     public void onDateSet(DatePicker view, int selectedYear, 
       int selectedMonth, int selectedDay) { 

      year = selectedYear; 
      month = selectedMonth; 
      day = selectedDay; 




      Intent i = new Intent(GetRota.this, NfcscannerActivity.class); 
      i.putExtra("nextRota", formattedSpinnyTime); 
      i.setAction("NEXT_ROTA"); 
      startActivity(i); 

     } 
    }; 

[편집]

@Override 
    protected Dialog onCreateDialog(int id) { 
     switch (id) { 
     case DATE_DIALOG_ID: 
      // set date picker as current date 

      //return new DatePickerDialog(this, datePickerListener, year, month, day); 
      DatePickerDialog dpd = new DatePickerDialog(nfcscannerapplication, datePickerListener, year, month, day); 
      dpd.updateDate(year, month, day); 
     } 
     return null; 
    } 

    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 

     // when dialog box is closed, below method will be called. 
     public void onDateSet(DatePicker view, int selectedYear, 
       int selectedMonth, int selectedDay) { 

      year = selectedYear; 
      month = selectedMonth; 
      day = selectedDay; 





      DateTime spinnyTime = new DateTime(year, month+1, day, 1, 1); 
      Log.e(TAG, "spinnyTime = " + spinnyTime); 
      DateTimeFormatter fmt = DateTimeFormat.forPattern("d-MMM-Y"); 
      String formattedSpinnyTime = fmt.print(spinnyTime); 
      Log.e(TAG, "spinnyTime = " + formattedSpinnyTime); 
      Log.e(TAG, "year = " + year); 
      Log.e(TAG, "month = " + month); 
      Log.e(TAG, "day = " + day); 
      nfcscannerapplication.setPreviousGlobalDateTime(nfcscannerapplication.getglobalDateTime()); 
      nfcscannerapplication.setGobalDateTime(spinnyTime); 



      Intent i = new Intent(GetRota.this, NfcscannerActivity.class); 
      i.putExtra("nextRota", formattedSpinnyTime); 
      i.setAction("NEXT_ROTA"); 
      startActivity(i); 

     } 
    }; 

[EDIT2]

11-06 16:27:33.320: E/AndroidRuntime(24628): FATAL EXCEPTION: main 
11-06 16:27:33.320: E/AndroidRuntime(24628): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.view.ViewRootImpl.setView(ViewRootImpl.java:595) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:406) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:320) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:152) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.app.Dialog.show(Dialog.java:301) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.app.Activity.showDialog(Activity.java:2983) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.app.Activity.showDialog(Activity.java:2933) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.carefreegroup.GetRota.onOptionsItemSelected(GetRota.java:239) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.app.Activity.onMenuItemSelected(Activity.java:2571) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:981) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:495) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:127) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.view.View$PerformClick.run(View.java:14319) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.os.Handler.handleCallback(Handler.java:608) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.os.Looper.loop(Looper.java:156) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at android.app.ActivityThread.main(ActivityThread.java:5045) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at java.lang.reflect.Method.invokeNative(Native Method) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at java.lang.reflect.Method.invoke(Method.java:511) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
11-06 16:27:33.320: E/AndroidRuntime(24628): at dalvik.system.NativeStart.main(Native Method) 

답변

0

당신은 joda 시간 - 2.0.jar API를 사용할 수 있습니다. 이 API는 Datetime 클래스를가집니다. 이 수업에서 시간을 가질 수 있습니다.

DateTime datetime = DateTime.now(); 
+0

안녕하세요, 저는 joda를 사용합니다. 날짜를 변경하는 데 사용하는 다이얼 위에 위젯 자체와 마찬가지로 위젯 자체에 날짜와 요일을 표시하고 싶습니다. – turtleboy

+0

DatePickerDialog를 만들면 해당 '업데이트 기능'을 사용합니다. (datepicker.updateDate (year, month, day)) –

+0

안녕하세요, 내가 무슨 뜻인지 생각하는 게시물을 업데이트했습니다. 그러나 대화가 전혀 표시되지 않습니다. – turtleboy