2014-02-22 2 views
4

나는 아주 간단한 질문이 있습니다. 나는 EditText을 클릭하여 클릭하면 DatePickerDialog이 열립니다. 그러나 반복적으로 EditText을 클릭하면 몇 개의 대화 상자가 열립니다. 사용자가이 작업을 수행하지 못하도록 제한하는 방법이 있습니까? EditText을 클릭 한 횟수에 관계없이 단 하나의 대화 상자 만 표시됩니까?사용자가 편집 문구를 여러 번 클릭하여 여러 대화 상자를 열지 못하게하십시오.

여기 내 내 XML 파일에서 EditText :

/** 
* Where user selects date, launch datepicker on click 
*/ 

public void selectDate() { 
    etSetDate.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      //launch datepicker 
      DialogFragment dialogFragment = new StartDatePicker(); 
      dialogFragment.show(getSupportFragmentManager(), 
       "start_date_picker"); 
     } 
    }); 
} 

public class StartDatePicker extends DialogFragment implements 
     DatePickerDialog.OnDateSetListener { 
    Calendar c = Calendar.getInstance(); 
    int startYear = c.get(Calendar.YEAR); 
    int startMonth = c.get(Calendar.MONTH); 
    int startDay = c.get(Calendar.DAY_OF_MONTH); 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the date picker 
     DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, 
      startYear, startMonth, startDay); 
     return dialog; 
    } 
} 
+0

ur ur java 코드 ... –

+0

플래그 변수를 설정하고 설정 플래그를 false로 사용하여 클릭 한 후 편집 텍스트를 비활성화하십시오. – InnocentKiller

+0

코드를 포함하도록 원래 질문을 편집하면 더 명확 해집니다. – NickT

답변

1
int flag = 0; 
etSetDate.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      //launch datepicker 

      if(flag == 0) 
      { 
      DialogFragment dialogFragment = new StartDatePicker(); 
      dialogFragment.show(getSupportFragmentManager(), 
        "start_date_picker"); 
      flag = 1; 
      } 

     } 

    }); 

때 다시 flag = 0을 설정하면 대화 해고 : 여기

<EditText 
    android:id="@+id/etSetDate" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/spDifficultyLevel" 
    android:drawableLeft="@drawable/ic_calendar_view" 
    android:ems="10" 
    android:focusableInTouchMode="false" 
    android:hint=" Set Date" 
/> 

는 코드입니다. 조각이있는 경우

+0

플래그는 final로 선언되지 않고 플래그 변수에 액세스 할 수 없으며 다음 if 문 내에서 1로 다시 할당 할 수 없습니다 – user2219097

+0

대화를 해제하는 방법을 알려주시겠습니까 ??? –

+0

상단에 업로드 된 코드는 datepicker를 닫을 수있는 직접적인 방법이 없습니다. – user2219097

1

먼저 확인 조각 관리자를 확인합니다 :

Fragment frag = getSupportFragmentManager().findFragmentByTag("start_date_picker"); 
if(frag == null) { 
    frag = new StartDatePicker(); 
    frag.show(getSupportFragmentManager(), "start_date_picker"); 
} 

을 파편이 다음 대화 상자가 표시되어 null가 아닌 경우.

관련 문제