2015-01-29 8 views
0

너비가 문제가 있습니다. DatePickerDialog가 열려서 화면 (가로/세로)을 돌리면 대화 상자가 중지되기 때문입니다.
는 지금은 번들에서 대화 상자의 상태를 저장하기 위해 노력하고있어,하지만 난 정말 모르는 방법 :/가로/세로 방향에서 회전 할 때 DatePickerDialog가 닫습니다.

코드 :

public class ActivityNeki extends Activity { 
    private int datY, datM, datD; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity); 
     if(savedInstanceState == null){ setTheData(); writeTheData(); } 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     outState.putInt("izY", datY); 
     outState.putInt("izM", datM); 
     outState.putInt("izD", datD); 

     super.onSaveInstanceState(outState); 
    } 
    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) { 
     super.onRestoreInstanceState(savedInstanceState); 
     datY = savedInstanceState.getInt("izY"); 
     datM = savedInstanceState.getInt("izM"); 
     datD = savedInstanceState.getInt("izD"); 
     writeTheData(); 
    } 

    public void onClickOpenDPD(View view) { // the method that is caled from XML onClick 
     DatePickerDialog dpd = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() { 
      @Override public void onDateSet(DatePicker view, int y, int m, int d) { 
       datY = y; datM = m; datD = d; 
       writeTheData(); 
      } 
     }, datY, datM, datD); 
     dpd.show(); 
    } 

    public void setTheData(){ 
     Calendar c = Calendar.getInstance(); 
     datY = c.get(Calendar.YEAR); 
     datM = c.get(Calendar.MONTH); 
     datD = c.get(Calendar.DAY_OF_MONTH); 
    } 
    public void writeTheData(){ 
     // writes the data in a txtView 
    } 

} 

애니 온은 어떤 생각 방법이 그래서 경우 이것을하기 위해, 나는 그것을 보증 할 것이다!


: 사전에

덕분에 작업 솔루션 : (Taig에 큰 TNX)

public class ActivityNeki extends FragmentActivity { 
    /** 
    * the rest of the code 
    * is the same... 
    * I only edited this method: 
    */ 
    public void onClickOpenDPD(View view) { // the method that is caled from XML onClick 
     class MyDialogFragment extends DialogFragment { 
      @Override public void onDestroyView() { 
       if (getDialog() != null && getRetainInstance()) getDialog().setDismissMessage(null); 
       super.onDestroyView(); 
      } 
      @Override public void onCreate(Bundle state) { super.onCreate(state); 
       setRetainInstance(true); 
      } 
      @Override public Dialog onCreateDialog(Bundle state) { 
       DatePickerDialog dpd = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() { 
        @Override public void onDateSet(DatePicker view, int y, int m, int d) { 
         datY = y; datM = m; datD = d; 
         writeTheData(); 
       } }, datY, datM, datD); 
       return dpd; 
      } 
     } 
     newDF = new MyDialogFragment(); 
     newDF.show(getSupportFragmentManager(), null); 
    } 
} 

답변

2

내가 그런 당신을 위해 옵션 인 경우 DialogFragments을 사용하는 것이 좋습니다 것입니다.

class MyDialogFragment extends DialogFragment { 
    @Override 
    public void onCreate(Bundle state) { 
     super.onCreate(state); 

     setRetainInstance(true); 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle state) { 
     return new DatePickerDialog(...); 
    } 
} 

귀하의 활동에서 new MyDialogFragment().show(getSupportFragmentManager(), null)을 호출하여 대화 상자를 시작할 수 있습니다. 대화 상자가 다시 열리고 방향 변경에 대한 현재 선택을 혼자 유지할 필요가 없습니다!

+0

대답은 tnx입니다. 이제는 LogCat에서 오류없이 작동합니다. 그러나 화면을 돌리면 대화 상자가 닫힙니다./어떤 아이디어입니까? Tnx again! :) – BRap

+0

게시물에 코드를 추가 할 수 있습니까? – Taig

+0

나는 다음과 같이 덧붙였다. :) – BRap