Android:保存在变量中的日期选择器值不';I don’我不进去了
我有一个相当简单的问题,但这是烦我了Android:保存在变量中的日期选择器值不';I don’我不进去了,android,android-studio,datepicker,Android,Android Studio,Datepicker,我有一个相当简单的问题,但这是烦我了 我正在尝试构建一个应用程序,其中我有两个日期选择器,periodFrom和periodTo。 基本上,我要做的是让用户选择两种情况下的日期,然后计算日期之间的差值(以天为单位)。我已经知道如何获得差异,如何从日期选择器获得日期。问题是我不知道应该从哪里获取日期选择器的值,因为onCreate初始化了日期选择器的侦听器,但它不将设置的日期存储在全局变量中,只存储它从Calendar.getInstance()获取的当前日期 这是我的主要活动代码,也许你可以在我
我正在尝试构建一个应用程序,其中我有两个日期选择器,periodFrom和periodTo。
基本上,我要做的是让用户选择两种情况下的日期,然后计算日期之间的差值(以天为单位)。我已经知道如何获得差异,如何从日期选择器获得日期。问题是我不知道应该从哪里获取日期选择器的值,因为onCreate初始化了日期选择器的侦听器,但它不将设置的日期存储在全局变量中,只存储它从
Calendar.getInstance()获取的当前日期代码>
这是我的主要活动代码,也许你可以在我遇到的这个问题上给我一些启发。谢谢大家!
MainActivity.class
package com.endtech.utilitycalculator;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
private EditText periodFrom, periodTo;
private Calendar mCalendarFrom = Calendar.getInstance();
private Calendar mCalendarTo = Calendar.getInstance();
private long from, to;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
periodFrom = (EditText) findViewById(R.id.periodFrom);
periodTo = (EditText) findViewById(R.id.periodTo);
initListeners();
from = mCalendarFrom.getTimeInMillis(); //This is current time, not the set time
to = mCalendarTo.getTimeInMillis(); //This is current time, not the set time
}
private void initListeners() {
setDateFrom();
setDateTo();
}
private void setDateFrom() {
final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mCalendarFrom.set(Calendar.YEAR, year);
mCalendarFrom.set(Calendar.MONTH, monthOfYear);
mCalendarFrom.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabelFrom();
}
};
periodFrom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(MainActivity.this, date, mCalendarFrom.get(Calendar.YEAR),
mCalendarFrom.get(Calendar.MONTH), mCalendarFrom.get(Calendar.DAY_OF_MONTH)).show();
}
});
}
private void updateLabelFrom() {
String mFormat = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(mFormat, Locale.GERMANY);
periodFrom.setText(sdf.format(mCalendarFrom.getTime()));
}
private void setDateTo() {
final DatePickerDialog.OnDateSetListener date2 = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mCalendarTo.set(Calendar.YEAR, year);
mCalendarTo.set(Calendar.MONTH, monthOfYear);
mCalendarTo.set(Calendar.DAY_OF_MONTH, dayOfMonth);
updateLabelTo();
}
};
periodTo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(MainActivity.this, date2, mCalendarTo.get(Calendar.YEAR),
mCalendarTo.get(Calendar.MONTH), mCalendarTo.get(Calendar.DAY_OF_MONTH)).show();
}
});
}
private void updateLabelTo() {
String mFormat = "dd/MM/yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(mFormat, Locale.GERMANY);
periodTo.setText(sdf.format(mCalendarTo.getTime()));
}
}问题是,在选择日期之前,您要先获取日期
只需创建一个按钮(当您单击该按钮时,即可完成将差异转换为天数的过程)。然后单击按钮获取日期值,然后将其转换为天
如果您在下面的评论中发现一些问题,请告诉我。那么您的问题是?设置日期后,从日历中可以从哪里获取值?这样我就可以在onCreate中使用该值。因为onCreate我只是初始化监听器,并以非常快的速度通过,所以它不会再次注册我的变量。我不知道你是否明白我的意思,谢谢。这也是我所想的。。。但我不想添加按钮。。无论如何,这种行为是正确的,你应该正确回答这个问题。然后你可以在选择periodTo时做同样的事情,但要确保你选择了periodFrom。或者设置一个条件,如果选择periodFrom,则只查找天。