【问题标题】:how to setText from value of DatePickerDialog如何从 DatePickerDialog 的值中设置文本
【发布时间】:2015-06-08 18:13:22
【问题描述】:

我试图在单击按钮并在 TextView 上设置其值后选择日期。 这个帖子帮助了Datepicker: How to popup datepicker when click on button and store value in variable

但我无法在 setText 上设置 datepicker 的值,textview 对象 v 返回空的 nullpointerexception。

         v.setText(new StringBuilder()
                // Month is 0 based so add 1
                .append(mMonth + 1).append("/").append(mDay).append("/")
                .append(mYear).append(" "));
        System.out.println(v.getText().toString());

感谢任何帮助

完整代码: Mainactivity.java

     public class MainActivity extends Activity   {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

}



public void pick(View v){

    Calendar c = Calendar.getInstance();
    int mYear = c.get(Calendar.YEAR);
    int mMonth = c.get(Calendar.MONTH);
    int mDay = c.get(Calendar.DAY_OF_MONTH);
    System.out.println("the selected " + mDay);
    DatePickerDialog dialog = new DatePickerDialog(MainActivity.this,
            new mDateSetListener(), mYear, mMonth, mDay);
    dialog.show();

    }

}



     class mDateSetListener  implements DatePickerDialog.OnDateSetListener {

private TextView v;

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
        int dayOfMonth) {
    // TODO Auto-generated method stub
    // getCalender();
    int mYear = year;
    int mMonth = monthOfYear;
    int mDay = dayOfMonth;
    v.setText(new StringBuilder()
            // Month is 0 based so add 1
            .append(mMonth + 1).append("/").append(mDay).append("/")
            .append(mYear).append(" "));



}
}

xml 文件:

     <RelativeLayout  
    android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.datesamp.MainActivity" >


    <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:layout_marginTop="101dp"
    android:text="Pick date" 
    android:onClick="pick"/>

   <TextView
   android:id="@+id/t1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/button1"
     />






     </RelativeLayout>

【问题讨论】:

    标签: android datepicker settext android-datepicker


    【解决方案1】:

    你需要在 onDateSet() 中使用变量 v 之前对其进行初始化,例如在 v.setText(...) 之前添加以下语句:

    v = (TextView) findViewById(R.id.t1);
    v.setText(new StringBuilder()
                // Month is 0 based so add 1
                .append(mMonth + 1).append("/").append(mDay).append("/")
                .append(mYear).append(" "));
    

    但是为了在onDateSet()中插入这个语句,我建议你将mDateSetListener类定义为MainActivity中的一个内部类,这样你的生活会更轻松.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多