[在此处输入图片描述] [1] [在此处输入图片描述] [2]嘿,我需要一些帮助,我正在使用基本的calander应用程序,但是在获取日期时遇到了一些麻烦。当我保存日期时,它保存的是当前日期,而不是用户选择的日期。所以我的问题是:在用户更改日期后,从CalandarView中检索日期的正确方法是什么? calandarView在其他地方初始化为当前日期。我只需要以简单的日期格式获取月份和年份。
CalendarView cView = (CalendarView) findViewById(R.id.calendarView);
final EditText myText = (EditText)
final Calendar myCal = Calendar.getInstance();//initialize to current date
myCal.setTimeInMillis(cView.getDate());//get current set date from the calandarview
答案 0 :(得分:0)
如果您使用的是CalendarView,请在活动中创建以下变量:
int day;
int month;
int year;
然后您可以使用以下侦听器:
cView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(CalendarView calendarView, int year, int month, int day) {
yourActivity.this.day = day;
yourActivity.this.month = month;
yourActivity.this.year = year;
}
});
然后使用所需的变量
编辑(发表评论后): 运行以下示例以查看其工作原理
soActivity.java:
public class soActivity extends AppCompatActivity {
private CalendarView cView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_so);
cView = findViewById(R.id.calendarView);
cView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
@Override
public void onSelectedDayChange(@NonNull CalendarView view, int year, int month, int dayOfMonth) {
Toast.makeText(soActivity.this, "date: "+dayOfMonth, Toast.LENGTH_LONG).show();
}
});
}
}
和R.layout.activity_so.xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".soActivity">
<CalendarView
android:id="@+id/calendarView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.constraint.ConstraintLayout>