0

我希望由日期选择器选择的日期显示在调用日期选择器的按钮上(通过片段类)。我试图通过在类中定义要在按钮的onClick之后执行的操作的方法来做到这一点。该方法通过setText()更改文本。该方法由片段类通过onDateSet()按钮调用。通过由该按钮激活的日期选择器选择日期后,更改按钮上的文本

现在,当我通过Date选择器设置日期时,应用程序崩溃。

代码: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

什么错误信息显示? – Hardik4560

+0

@ Hardik4560好,该应用程序只是崩溃。你想让我发布LogCat? –

+0

yups ...想要查看异常来调试原因。 – Hardik4560

回答

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是一个外部类程序将会崩溃。

+0

我不能! onDataSet是片段类的一部分; '公共类DatePickerFragment扩展DialogFragment实现DatePickerDialog.OnDateSetListener' 和findViewById不被这些类识别。 –

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

+0

不工作。同样的问题仍然存在。我添加了'Button date_button =(Button)findViewById(R.id.datebutton); date_button。setText(selectedDate);' 到具有'changebuttontext()'的'onWindowFocusChange()'下的相同类。 如果我使用onResume,只要我输入包含按钮的活动,应用程序就会崩溃。 –

+0

请通过日志记录检查selectedDate的值... – Hardik4560

+0

我再次发布了问题,但采用了不同的方法。得到了答案。 [这里](http://stackoverflow.com/questions/14024921/retrieve-and-set-data-from-dialogfragment-datepicker)是链接。 谢谢你的时间,但:) –

相关问题