0
我有一個應用程序使用DatePickerDialog來設置日期。如果您更改微調器上的日期,我希望在小部件上顯示日期和星期幾。這在2.3.3的三星mini上運行時會發生。然而,當在htc one x 4.0.4上編譯時,星期幾和星期幾不存在。如何將當前日期和星期幾放在DatePickerDialog上
無論哪種設備或Android版本,我如何確保小部件上的日期和星期幾總是存在?
我需要覆蓋小部件的默認行爲,因爲它根據哪個設備或操作系統而不一致。謝謝
@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)
嗨,是的,我使用喬達。我想在窗口小部件本身上顯示日期和星期幾,如上面用於更改日期的刻度盤 – turtleboy
當您創建DatePickerDialog時,則使用該更新函數。 (datepicker.updateDate(year,month,day)) –
嗨,我更新了這篇文章做我認爲你的意思,但對話框現在不顯示 – turtleboy