Android 我从DatePicker中选择了一个日期,然后想开始另一个活动
当我从DatePicker中选择日期时,我想开始另一个日期 ActivityGetAttention,但我需要两次才能到达,我只需要一次。可以打一次电话吗 //代码Android 我从DatePicker中选择了一个日期,然后想开始另一个活动,android,datepicker,Android,Datepicker,当我从DatePicker中选择日期时,我想开始另一个日期 ActivityGetAttention,但我需要两次才能到达,我只需要一次。可以打一次电话吗 //代码 classes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try {
classes.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
try
{
showDialog(DATE_DIALOG_ID);
} catch (Exception e)
{
e.printStackTrace();
}
}
});
protected Dialog onCreateDialog(int id)
{
switch (id) {
case DATE_DIALOG_ID: // set date picker as current date
return new DatePickerDialog(this, obj,year, month,day);
}
return null;
};
DatePickerDialog.OnDateSetListener obj=new DatePickerDialog.OnDateSetListener()
{
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth)
{
try
{ dday=dayOfMonth;
mmonth=monthOfYear;
yyear=year;
getDateString=parseDateMethod(dday,mmonth,yyear);
} catch (Exception e)
{
e.printStackTrace();
}
finally
{
pd=ProgressDialog.show(Home.this, "passing List", "Processing");
new AttendanceAthnticate().execute();
}
//Toast.makeText(Home.this,"Date is "+getDateString, Toast.LENGTH_LONG).show();
}
};
//AsynTask:
private class AttendanceAthnticate extends AsyncTask<String, Void, ArrayList<SetAttendance>>
{
ArrayList<SetAttendance> listAtt;
@Override
protected ArrayList<SetAttendance> doInBackground(String... params)
{
listAtt=new AllMethods().getAttendance();
pd.cancel();
return listAtt;
}
@Override
protected void onPostExecute(ArrayList<SetAttendance> result)
{
try
{
if(result.size()>0)
{
Intent iii=new Intent(Home.this,GetAttendance.class);//It takes me two time which i want for one time
iii.putExtra("shahid", result);
startActivity(iii);
}
else
{
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}
接下来,当设置日期时,似乎会调用DatePickerDialog.OnDateSetListener两次。所以你有这个bug是正常的
一个可能的解决方案是:
DatePickerDialog.OnDateSetListener obj=new DatePickerDialog.OnDateSetListener()
{
boolean alreadyFired = false;
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth)
{
if (alreadyFired == false)
{
try
{ dday=dayOfMonth;
mmonth=monthOfYear;
yyear=year;
getDateString=parseDateMethod(dday,mmonth,yyear);
} catch (Exception e)
{
e.printStackTrace();
}
finally
{
pd=ProgressDialog.show(Home.this, "passing List", "Processing");
new AttendanceAthnticate().execute();
}
//Toast.makeText(Home.this,"Date is "+getDateString, Toast.LENGTH_LONG).show();
alreadyFired = true;
}
else
{
alreadyFired = false;
}
}
};
它必须是崩溃应用程序。我应该如何避免崩溃应用程序提示此行pd.cancel;我对它进行了评论,但progressDialog正在处理中,并且需要两次。我仍然需要两次。@Shahibangash检查我的编辑并告诉我它是否更改了某些内容。@Shahibangash很高兴它有帮助!你可以找到解决问题的答案。