조각에서 성공적으로 시작되는 DatePickerDialog가 있습니다. 방향 변경이 발생하면 앱이 충돌합니다. logcat 출력은 NPE가 DatePickerFragment의 onDismiss와 함께 발생한다고 말합니다. onDismiss 코드는 소프트 키보드를 다시 표시하도록 전환하는 데 사용됩니다 (DatePickerDialog가 시작된 후 해제 됨). 소프트 키보드를 시작하는 InputMethodManager는 "getActivity ()"참조를 사용합니다.이 참조는 Activity가 다시 생성 되었기 때문에 방향 후 충돌을 일으키는 것으로 생각됩니다. 방향 변경시 dialogfragment를 재사용하는 방법으로 findFragmentByTag를 사용하여 Fragment에 대한 참조로 바꿀 수 있습니까?
다음은 일부 DatePickerFragement 파일입니다.
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public DatePickerFragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
...
DatePickerDialog picker = new DatePickerDialog(getActivity(),
this, year, month, day); return picker;
}
public void onDismiss(final DialogInterface dialog) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(CardViewActivity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0);
super.onDismiss(dialog);
}
}
Activity file // uses show() to launch the DialogFragment:
public class Activity extends AppCompatActivity {
...
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
있는지 확인 getActivity()
하지 않습니다 null
에onDismiss()
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다