CalandarView获取用户选择的日期

时间:2018-12-03 21:15:47

标签: java android android-studio

[在此处输入图片描述] [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

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

1 个答案:

答案 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>