首页 > 解决方案 > CalandarView 获取用户选择的日期

问题描述

[在此处输入图像描述][1][在此处输入图像描述][2]大家好,我需要一些帮助我正在开发一个基本的日历应用程序,但在检索日期时遇到了一些问题。当我保存日期时,它会保存当前日期,而不是用户选择的日期。所以我的问题是:在用户更改日期后,从 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

https://i.stack.imgur.com/4MWI5.png

标签: javaandroidandroid-studio

解决方案


如果您使用的是 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>

推荐阅读