2017-03-14 39 views
0

如何在設置日期選擇器時自動生成和編輯文本?使用datepicker設置日期時自動生成年齡 - Android Xamarin

我的XML文件是這樣的:

 <TextView 
      android:text="Birthdate:" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
     <DatePicker 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/in_bDate" 
      android:calendarViewShown="false" 
      android:datePickerMode="spinner" 
      android:spinnersShown="true" /> 
     <TextView 
      android:text="Age:" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
     <EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/in_age" 
      android:layout_marginBottom="10dp" /> 

和我的CS文件看起來像這樣:

 DatePicker bDate = FindViewById<DatePicker>(Resource.Id.in_bDate); 
     EditText age = FindViewById<EditText>(Resource.Id.in_age); 

     bDate.Click += delegate { 
      var year = DateTime.Now.Year; 
      int auto_age = year - bDate.Year; 
      age.SetText(auto_age.ToString(), TextView.BufferType.Editable); 
     }; 

編輯:改變了方法

回答

1

DatePicker需要被創建後進行初始化,您可以傳遞一個DateChangeEventListener到DatePicker.Init方法和DateChangeListener裏面,你可以設置TextView的文字:

public class MainActivity : Activity 
{ 
    public DatePicker datePicker; 
    public EditText age; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView (Resource.Layout.Main); 
     datePicker = FindViewById<DatePicker>(Resource.Id.in_bDate); 
     age = FindViewById<EditText>(Resource.Id.in_age); 
     DateChangeEventHandler handler = new DateChangeEventHandler(this); 
     datePicker.Init(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, handler); 

    } 


    public class DateChangeEventHandler :Java.Lang.Object, DatePicker.IOnDateChangedListener 
    { 
     Activity activity; 

     public DateChangeEventHandler(Activity a) 
     { 
      activity = a; 
     } 

     public void Dispose() 
     { 
      this.Dispose(); 
     } 

     public void OnDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
     { 
      (activity as MainActivity).age.Text = view.DateTime.ToString(); 
     } 
    } 
} 
0

我用設置年齡的內容這個:

private String getUserAge() { 

    Calendar dob = Calendar.getInstance(); 
    Calendar today = Calendar.getInstance(); 

    dob.setTime(mCurrentUser.dateBirthday); 

    int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR); 
    if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)){ 
     age--; 
    } 

    return Integer.toString(age) + " yo"; 
}