我希望日期选择器选择的日期显示在调用日期选择器的按钮上(通过片段类)。我尝试通过在类中创建一个方法来实现这一点,该方法定义了按钮onClick后要采取的操作。该方法通过setText()更改文本。片段类通过onDateSet()按钮调用此方法。
现在,当我通过日期选择器设置日期时,应用程序崩溃了。
代码:1。
public void onDateSet(DatePicker view, int year, int month, int day) { Addproject changetxt = new Addproject(); changetxt.changebuttontext(year, month, day); //Doing something with the date chosen }
此处调用将更改按钮文本的方法与其他类相同,并传递日,月,年数据。
代码2。
public void changebuttontext (int year, int month, int day) { Button date_button = (Button)findViewById(R.id.datebutton); date_button.setText(year + "/" + month + "/" + day); }
此方法应该更改按钮上的文字。
目录下载:
12-24 22:42:25.608: E/AndroidRuntime(3478): at com.kk.project.DatePickerFragment.onDateSet(DatePickerFragment.java:33) 12-24 22:42:25.608: E/AndroidRuntime(3478): at android.app.DatePickerDialog.onClick(DatePickerDialog.java:111) 12-24 22:42:25.608: E/AndroidRuntime(3478): at com.android.internal.app.AlertController$ButtonHandler.handleMessage (AlertController.java:166) 12-24 22:42:25.608: E/AndroidRuntime(3478): at android.os.Handler.dispatchMessage(Handler.java:99) 12-24 22:42:25.608: E/AndroidRuntime(3478): at android.os.Looper.loop(Looper.java:137) 12-24 22:42:25.608: E/AndroidRuntime(3478): at android.app.ActivityThread.main(ActivityThread.java:4424) 12-24 22:42:25.608: E/AndroidRuntime(3478): at java.lang.reflect.Method.invokeNative(Native Method) 12-24 22:42:25.608: E/AndroidRuntime(3478): at java.lang.reflect.Method.invoke(Method.java:511) 12-24 22:42:25.608: E/AndroidRuntime(3478): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 12-24 22:42:25.608: E/AndroidRuntime(3478): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-24 22:42:25.608: E/AndroidRuntime(3478): at dalvik.system.NativeStart.main(Native Method)
我只发布了红色的部分
答案 0 :(得分:0)
public void changebuttontext (int year, int month, int day) {
Button date_button = (Button)findViewById(R.id.datebutton);
date_button.setText(year + "/" + month + "/" + day);
}
应该从Activity类调用此代码。如果AddProject是一个外部类程序将崩溃。
答案 1 :(得分:0)
我认为在查看您的数据后出现的问题是,当活动不在焦点时,您正在尝试查找ViewById。 作为解决方案,您可以尝试这样的事情。
public void changebuttontext (int year, int month, int day) {
selectedDate = year + "/" + month + "/" + day;
}
这里选择的日期是一个字段变量。现在在onWindowFocusChange()或onResume中,无论哪个工作都放在
Button date_button = (Button)findViewById(R.id.datebutton);
date_button.setText(selectedDate);
一部分。
可能想检查一下这个例外情况。 Illegal argument exception in android dialog