我有一个带有日历视图的屏幕,如果在任何日期点击将进入带有edittext的新屏幕,用于日期输入和其他数据。我希望点击的日期将出现在EditText(id = txtDate)中。在屏幕上,我尝试使用Toast的例子在Edittext中输入日期:
Toast.makeText(getApplicationContext(),
day + "/" + month + "/" + year, Toast.LENGTH_LONG)
.show();
我改变了:
txtDate.setText(day + "/" + month + "/" + year);
它不起作用。应该做什么?
代码:
public class ScreenCalendar extends Activity {
EditText txtDate;
CalendarView calendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.screen_calendar);
txtDate = (EditText) findViewById(R.id.txtDate);
// initializes the calendarview
initializeCalendar();
}
@SuppressLint("NewApi")
public void initializeCalendar() {
calendar = (CalendarView) findViewById(R.id.calendar);
// sets whether to show the week number.
calendar.setShowWeekNumber(false);
// sets the first day of week according to Calendar.
// here we set Monday as the first day of the Calendar
calendar.setFirstDayOfWeek(2);
// The background color for the selected week.
calendar.setSelectedWeekBackgroundColor(getResources().getColor(
R.color.green));
// sets the color for the dates of an unfocused month.
calendar.setUnfocusedMonthDateColor(getResources().getColor(
R.color.transparent));
// sets the color for the separator line between weeks.
calendar.setWeekSeparatorLineColor(getResources().getColor(
R.color.transparent));
// sets the color for the vertical bar shown at the beginning and at the
// end of the selected date.
calendar.setSelectedDateVerticalBar(R.color.darkgreen);
// sets the listener to be notified upon selected date change.
calendar.setOnDateChangeListener(new OnDateChangeListener() {
// show the selected date as a toast
@Override
public void onSelectedDayChange(CalendarView view, int year,
int month, int day) {
startActivity(new Intent(getBaseContext(), Event.class));
/*Toast.makeText(getApplicationContext(),
day + "/" + month + "/" + year, Toast.LENGTH_LONG)
.show();*/
txtDate.setText(day + "/" + month + "/" + year);
}
});
代码:
public class Event extends Activity implements OnClickListener {
EditText txtDate, txtTime;
// Variable for storing current date and time
private int mYear, mMonth, mDay, mHour, mMinute;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.event);
txtDate = (EditText) findViewById(R.id.txtDate);
txtTime = (EditText) findViewById(R.id.txtTime);
txtDate.setOnClickListener(this);
txtTime.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v == txtDate) {
// Process to get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// Launch Date Picker Dialog
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
txtDate.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
dpd.show();
}
if (v == txtTime) {
// Process to get Current Time
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog tpd = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
// Display Selected time in textbox
txtTime.setText(hourOfDay + ":" + minute);
}
}, mHour, mMinute, false);
tpd.show();
}
}
}
@pez的LogCat
07-26 13:55:42.312: V/RenderScript(25287): 0xb4820e00 Launching thread(s), CPUs 2
07-26 13:55:45.676: E/InputEventReceiver(25287): Exception dispatching input event.
07-26 13:55:45.676: E/MessageQueue-JNI(25287): Exception in MessageQueue callback: handleReceiveCallback
07-26 13:55:45.679: E/MessageQueue-JNI(25287): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence, android.widget.TextView$BufferType)' on a null object reference
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at br.info.agendamain.ScreenCalendar$1.onSelectedDayChange(ScreenCalendar.java:94)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.widget.CalendarViewLegacyDelegate$1.onChanged(CalendarViewLegacyDelegate.java:680)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.setSelectedDay(CalendarViewLegacyDelegate.java:1036)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.onDateTapped(CalendarViewLegacyDelegate.java:1121)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.onTouch(CalendarViewLegacyDelegate.java:1109)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.View.dispatchTouchEvent(View.java:8470)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2369)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1719)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.app.Activity.dispatchTouchEvent(Activity.java:2752)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2330)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.View.dispatchPointerEvent(View.java:8671)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4193)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4059)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3657)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3623)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3740)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3631)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3797)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3657)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3623)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3631)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5912)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5851)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5822)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6002)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:192)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.os.MessageQueue.nativePollOnce(Native Method)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.os.MessageQueue.next(MessageQueue.java:143)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.os.Looper.loop(Looper.java:122)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at android.app.ActivityThread.main(ActivityThread.java:5343)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at java.lang.reflect.Method.invoke(Native Method)
07-26 13:55:45.679: E/MessageQueue-JNI(25287): at java.lang.reflect.Method.invoke(Method.jav
07-26 13:55:45.680: D/AndroidRuntime(25287): Shutting down VM
07-26 13:55:45.682: E/AndroidRuntime(25287): FATAL EXCEPTION: main
07-26 13:55:45.682: E/AndroidRuntime(25287): Process: br.info.agendamain, PID: 25287
07-26 13:55:45.682: E/AndroidRuntime(25287): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.setText(java.lang.CharSequence, android.widget.TextView$BufferType)' on a null object reference
07-26 13:55:45.682: E/AndroidRuntime(25287): at br.info.agendamain.ScreenCalendar$1.onSelectedDayChange(ScreenCalendar.java:94)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.widget.CalendarViewLegacyDelegate$1.onChanged(CalendarViewLegacyDelegate.java:680)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.database.DataSetObservable.notifyChanged(DataSetObservable.java:37)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.widget.BaseAdapter.notifyDataSetChanged(BaseAdapter.java:50)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.setSelectedDay(CalendarViewLegacyDelegate.java:1036)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.onDateTapped(CalendarViewLegacyDelegate.java:1121)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.widget.CalendarViewLegacyDelegate$WeeksAdapter.onTouch(CalendarViewLegacyDelegate.java:1109)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.View.dispatchTouchEvent(View.java:8470)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
07-26 13:55:45.682: E/AndroidRuntime(25287): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2369)
07-26 13:55:45.682: E/AndroidRuntime(25287): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1719)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.app.Activity.dispatchTouchEvent(Activity.java:2752)
07-26 13:55:45.682: E/AndroidRuntime(25287): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2330)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.View.dispatchPointerEvent(View.java:8671)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4193)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4059)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3657)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3623)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3740)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3631)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3797)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3657)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3623)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3631)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3604)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5912)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5851)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5822)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6002)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:192)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.os.MessageQueue.nativePollOnce(Native Method)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.os.MessageQueue.next(MessageQueue.java:143)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.os.Looper.loop(Looper.java:122)
07-26 13:55:45.682: E/AndroidRuntime(25287): at android.app.ActivityThread.main(ActivityThread.java:5343)
07-26 13:55:45.682: E/AndroidRuntime(25287): at java.lang.reflect.Method.invoke(N
07-26 13:55:47.962: I/Process(25287): Sending signal. PID: 25287 SIG: 9
07-26 13:55:48.348: D/OpenGLRenderer(25346): Use EGL_SWAP_BEHAVIOR_PRESERVED: true
07-26 13:55:48.354: D/Atlas(25346): Validating map...
07-26 13:55:48.415: I/Adreno-EGL(25346): <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.AF.1.1_RB1.05.00.02.006.020_msm8960_LA.AF.1.1_RB1__release_AU ()
07-26 13:55:48.415: I/Adreno-EGL(25346): OpenGL ES Shader Compiler Version: E031.25.03.06
07-26 13:55:48.415: I/Adreno-EGL(25346): Build Date: 03/30/15 Mon
07-26 13:55:48.415: I/Adreno-EGL(25346): Local Branch: mybranch8688311
07-26 13:55:48.415: I/Adreno-EGL(25346): Remote Branch: quic/LA.AF.1.1_rb1.16
07-26 13:55:48.415: I/Adreno-EGL(25346): Local Patches: NONE
07-26 13:55:48.415: I/Adreno-EGL(25346): Reconstruct Branch: AU_LINUX_ANDROID_LA.AF.1.1_RB1.05.00.02.006.020 + 9b2699f + 2215637 + 60aa592 + f2362e6 + 5c64f59 + 82411a1 + 1f36e07 + NOTHING
07-26 13:55:48.416: I/OpenGLRenderer(25346): Initialized EGL, version 1.4
07-26 13:55:48.443: D/OpenGLRenderer(25346): Enabling debug mode 0
答案 0 :(得分:0)
可以看到EditText的setText()
方法here。
public void setText(CharSequence text,TextView.BufferType type)
试试这个:
txtDate.setText(day + "/" + month + "/" + year, TextView.BufferType.EDITABLE);
编辑:
当您尝试在其上调用txtDate
时,您的logcat会显示setText()
为空。