通过该按钮激活的日期选择器选择日期后,更改按钮上的文本

时间:2012-12-24 17:32:23

标签: java android android-layout android-fragments android-button

我希望日期选择器选择的日期显示在调用日期选择器的按钮上(通过片段类)。我尝试通过在类中创建一个方法来实现这一点,该方法定义了按钮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)

我只发布了红色的部分

2 个答案:

答案 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