2017-05-23 14 views
0

현재 DialogFragment와 함께 사용자 지정 레이아웃을 사용하려고하고 있지만 잘못된 것 같습니다. 긍정적/부정적 버튼 (제목과 함께) 보여DialogFragment onCreateView가 사용자 정의 레이아웃보기를 반환하지 않습니까?

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    setRetainInstance(true); 
    Log.d(TAG, "onCreateDialog"); 
    return new AlertDialog.Builder(getActivity()) 
      .setPositiveButton(android.R.string.ok, passDataListener) 
      .setNegativeButton(android.R.string.cancel, null) 
      .setCancelable(true) 
      .create(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    Log.d(TAG, "onCreateView"); 
    setTitleFromBundle(); 
    return inflater.inflate(R.layout.dialog_edittext, container); 


} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    mEditText = (EditText) view.findViewById(R.id.dialog_edittext); 
    tvUnits = (TextView) view.findViewById(R.id.dialog_units); 

    setMaxCharsFromBundle(); 
    setTextFromBundle(); 
    setHintFromBundle(); 
    setInputTypeFromBundle(); 
    setUnitsTextViewFromBundle(); 
} 

그러나, 내 배치하지 않는이 내 클래스는 현재 모습입니다.

+0

대화 상자 조각을 사용하는 경우 왜 AlertDialog.Builder inOnCreate를 사용합니까? –

답변

0

가를 오버라이드 (override) 할 필요가 없습니다 볼 수 있습니다

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
setRetainInstance(true); 
Log.d(TAG, "onCreateDialog"); 
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
return new AlertDialog.Builder(getActivity()) 
     .setView(inflater.inflate(R.layout.dialog_edittext, null)) 
     .setPositiveButton(android.R.string.ok, passDataListener) 
     .setNegativeButton(android.R.string.cancel, null) 
     .setCancelable(true) 
     .create(); 
} 
0

onCreateDialogonCreateView은 동시에 사용할 수 없습니다. "기본 대화 상자"를 표시하고 onCreateDialog을 덮어 쓰려면 선택해야합니다. "사용자 정의 대화 상자"를 표시하려면 onCreateView을 덮어 씁니다. onCreateDialog을 덮어 쓰고 자신의 레이아웃을 youralertdialog.setView()으로 설정할 수도 있습니다.

-1

두 가지가 아닌 onCreateViewonCreateDialog 사이에 하나의 메서드 만 구현해야합니다.

  • onCreateView : 대화
  • 이 onCreateDialog의 컨텐츠를 제공하려면

모든이 문서에 설명되어있는 자신의 내용으로, 같은에 AlertDialog로 완전히 사용자 정의 대화 상자를 만들 here

완벽한 가이드를 들어 당신은 https://guides.codepath.com/android/Using-DialogFragment