2014-05-14 2 views
0

DatePicker에서 날짜를 선택하고 다른
액티비티 (GetAttendance)를 시작하려고합니다.하지만 두 번 걸리며 한 번만 원합니다. . 한 번만 전화 할 수 있습니까?DatePicker에서 날짜를 선택하고 다른 활동을 시작하려면

// 코드

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 : 날짜가 설정 될 때 DatePickerDialog.OnDateSetListener()가 두 번 호출처럼

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(); 
     }  
    } 

} 
+0

이 충돌 응용 프로그램이 있어야합니다. –

+0

충돌 응용 프로그램에서 피하려면 어떻게해야합니까? –

+0

이 줄 코멘트 pd.cancel(); –

답변

0

issue에 따라, 그것은 보인다. 따라서 당신은이 버그가있는 것이 정상입니다.

가능한 솔루션이 하나입니다

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; 
      } 
    } 
}; 
+0

여전히 2 번이나 걸립니다. –

+0

@ShahidBangash 편집 내용을 확인하고 변경 사항을 알려주십시오. – calimbak

+0

동생에게 감사드립니다. 고맙습니다. –

관련 문제