我正在做一个有一个活动的应用程序和另一个名为MyPicker的类,它扩展了DialogFragment并实现了DatePickerDialog.OnDateSetListener
当用户点击一个按钮时,出现了一个dataPicker,我希望将该日期从datePicker转移到它是活动的texfield。
你怎么建议我这样做?
答案 0 :(得分:0)
嗨,这个问题已经在stackoverflow上问过很多次了.. 你可以做那样的事情 -
public class MainActivity extends Activity {
TextView textDate;
private int year;
private int month;
private int day;
static final int DATE_DIALOG_ID = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textDate = (TextView) findViewById(R.id.text_date);
final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
textDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this, mDateSetListener, year, month,
day);
}
return null;
}
// updates the date we display in the TextView
private void updateDisplay() {
/*
* Hide virtual keyboard
*/
textDate.setText(new StringBuilder()
// Month is 0 based so add 1
.append(year).append("-").append(month + 1).append("-")
.append(day).append(""));
}
private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int myear, int monthOfYear,
int dayOfMonth) {
year = myear;
month = monthOfYear;
day = dayOfMonth;
updateDisplay();
}
};
}
演示链接为here-
答案 1 :(得分:0)
public class MainActivity extends Activity implements OnClickListener {
private Button mDateButton;
private Calendar mCalen;
private int day;
private int month;
private int year;
private static final int DATE_PICKER_ID = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDateButton = (Button) findViewById(R.id.date_button);
mCalen = Calendar.getInstance();
day = mCalen.get(Calendar.DAY_OF_MONTH);
month = mCalen.get(Calendar.MONTH);
year = mCalen.get(Calendar.YEAR);
mDateButton.setOnClickListener(this);
}
@Override
@Deprecated
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_PICKER_ID:
return new DatePickerDialog(this, datePickerListener,
year, month, day);
}
return null;
}
private DatePickerDialog.OnDateSetListener datePickerListener =
new DatePickerDialog.OnDateSetListener() {
// while dialog box is closed, below method is called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
year = selectedYear;
month = selectedMonth;
day = selectedDay;
// Set the Date String in Button
mDateButton.setText(day + " / " + (month + 1) + " / " + year);
}
};
@Override
public void onClick(View v) {
showDialog(DATE_PICKER_ID);
}
}
答案 2 :(得分:0)
如果您要更改日期选择器中的日期,则可以执行此操作
datePicker.setOnDateChangeListner(new OnDateChangedListener() {
public void onDateChanged(DatePicker view, int year1,
int monthOfYear1, int dayOfMonth1) {
year = year1;
monthOfYear = monthOfYear1;
dayOfMonth = dayOfMonth1;
}
}
);