Android datepicker方法重复了两次
我有一个图像,如果我点击它,然后,日期选择器显示从那个。如果我选择日期和完成,则将显示日期 其工作正常,但Android datepicker方法重复了两次,android,Android,我有一个图像,如果我点击它,然后,日期选择器显示从那个。如果我选择日期和完成,则将显示日期 其工作正常,但System.out.println(“当前日期2更大”) Toast.makeText(getApplicationContext(),“无效日期”,Toast.LENGTH\u SHORT.show()在控制台中获取数据2次。它重复了2次 public class LoginActivity extends ActionBarActivity implements OnClick
System.out.println(“当前日期2更大”)代码>
Toast.makeText(getApplicationContext(),“无效日期”,Toast.LENGTH\u SHORT.show()代码>在控制台中获取数据2次。它重复了2次
public class LoginActivity extends ActionBarActivity implements OnClickListener {
private Calendar calendar;
private int day;
private int month;
private int year;
private ImageView dateOfBirthImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
dateOfBirthImage = (ImageView) findViewById(R.id.dobImage);
calendar = Calendar.getInstance();
day = calendar.get(Calendar.DAY_OF_MONTH);
month = calendar.get(Calendar.MONTH) + 1;
year = calendar.get(Calendar.YEAR);
dateOfBirthImage.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
showDialog(999);
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
// return new DatePickerDialog(this, datePickerListener, year, month, day);
if (id == 999) {
return new DatePickerDialog(this, datePickerListener, year, month, day);
}
return null;
}
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
String currentDate = ""+day + "/" + month + "/" + year ;
String selectedDate = ""+selectedDay + "/" + (selectedMonth + 1) + "/" + selectedYear ;
java.util.Date date1 = sdf.parse(currentDate);
java.util.Date date2 = sdf.parse(selectedDate);
System.out.println("Current compare " + currentDate + "sasd" + selectedDate );
if (date1.compareTo(date2) < 0 ) {
System.out.println("Current Date2 is greater");
Toast.makeText(getApplicationContext(), "Invalid Date", Toast.LENGTH_SHORT).show();
}
else {
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
}
公共类LoginActivity扩展了ActionBarActivity实现了OnClickListener{
私人日历;
私人国际日;
私人整数月;
私人国际年;
私人图像查看Birthimage的日期;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
dateOfBirthImage=(ImageView)findViewById(R.id.dobImage);
calendar=calendar.getInstance();
day=calendar.get(calendar.day/u月);
month=calendar.get(calendar.month)+1;
year=calendar.get(calendar.year);
dateOfBirthImage.setOnClickListener(此);
}
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
showDialog(999);
}
@凌驾
受保护的对话框onCreateDialog(int id){
//TODO自动生成的方法存根
//返回新的DatePickerDialog(this,datePickerListener,year,month,day);
如果(id==999){
返回新的DatePickerDialog(this,datePickerListener,year,month,day);
}
返回null;
}
私有DatePickerDialog.OnDateSetListener datePickerListener=new DatePickerDialog.OnDateSetListener(){
公共void onDateSet(日期选择器视图,int-selectedYear,int-selectedMonth,int-selectedDay){
SimpleDataFormat sdf=新的SimpleDataFormat(“日/月/年”);
试一试{
字符串currentDate=“”+天+“/”+月+“/”+年;
字符串selectedDate=”“+selectedDay+“/”+(selectedMonth+1)+“/”+selectedYear;
java.util.Date date1=sdf.parse(currentDate);
java.util.Date date2=sdf.parse(selectedDate);
System.out.println(“当前比较”+当前日期+“sasd”+所选日期);
如果(日期1)与(日期2)相比<0{
System.out.println(“当前日期2更大”);
Toast.makeText(getApplicationContext(),“无效日期”,Toast.LENGTH\u SHORT.show();
}
否则{
}
}捕获(解析异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
};
}
使用isShown
方法检查日期选择器
视图
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
if(view.isShown()){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try {
String currentDate = ""+day + "/" + month + "/" + year ;
String selectedDate = ""+selectedDay + "/" + (selectedMonth + 1) + "/" + selectedYear ;
java.util.Date date1 = sdf.parse(currentDate);
java.util.Date date2 = sdf.parse(selectedDate);
System.out.println("Current compare " + currentDate + "sasd" + selectedDate );
if (date1.compareTo(date2) < 0 ) {
System.out.println("Current Date2 is greater");
Toast.makeText(getApplicationContext(), "Invalid Date", Toast.LENGTH_SHORT).show();
}
else {
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void onDateSet(日期选择器视图,int-selectedYear,int-selectedMonth,int-selectedDay){
if(view.isShown()){
SimpleDataFormat sdf=新的SimpleDataFormat(“日/月/年”);
试一试{
字符串currentDate=“”+天+“/”+月+“/”+年;
字符串selectedDate=”“+selectedDay+“/”+(selectedMonth+1)+“/”+selectedYear;
java.util.Date date1=sdf.parse(currentDate);
java.util.Date date2=sdf.parse(selectedDate);
System.out.println(“当前比较”+当前日期+“sasd”+所选日期);
如果(日期1)与(日期2)相比<0{
System.out.println(“当前日期2更大”);
Toast.makeText(getApplicationContext(),“无效日期”,Toast.LENGTH\u SHORT.show();
}
否则{
}
}捕获(解析异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
declare int noOfTimesCalled=0的可能重复项;在DatePickerDialog和onDateSet中添加if(noOfTimesCalled%2==0){your code}noOfTimesCalled++;