Android 我从DatePicker中选择了一个日期,然后想开始另一个活动

Android 我从DatePicker中选择了一个日期,然后想开始另一个活动,android,datepicker,Android,Datepicker,当我从DatePicker中选择日期时,我想开始另一个日期 ActivityGetAttention,但我需要两次才能到达,我只需要一次。可以打一次电话吗 //代码 classes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try {

当我从DatePicker中选择日期时,我想开始另一个日期 ActivityGetAttention,但我需要两次才能到达,我只需要一次。可以打一次电话吗

//代码

   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很高兴它有帮助!你可以找到解决问题的答案。