내 안드로이드 응용 프로그램에 대한 설정 활동을 만들고 있는데, 암호를 허용할지 여부를 결정하는 옵션 중 하나입니다. 어쨌든 그 옵션을 선택하지 않고 암호를 변경하기 전에 암호를 묻기를 원합니다. 우선권. 변경 후, 변경 후, 변경 후, Dialog 프래그먼트가 나타나서 비밀번호를 묻기를 원한다면, onPreferenceChange 메소드가 호출되어야하고, 패스워드가 정확하다면, 을 리턴함으로써 환경 설정이 변경 될 수있다.; 환경 설정
문제
내 설정 단편)을 getFragmentManager을 (인식 할 수없는 내가 getActivity.getFragmentManager 할 경우에도 그것이 preferencefragment 대화에 캐스트 할 수없는 오류를 준다이다. 대화 상자는 프로젝트의 일반적인 활동에는 작동하지만 기본 설정 조각에는 작동하지 않습니다.이
은 활성public class password_dialog extends DialogFragment {
public interface PasswordDialogListener {
void onDialogPositiveClick(DialogFragment dialog, String password);
void onDialogNegativeClick(DialogFragment dialog);
}
PasswordDialogListener mListener;
@Override
public void onAttach(Context activity) {
super.onAttach(activity);
// Verify that the host activity implements the callback interface
try {
// Instantiate the PasswordDialogListener so we can send events to the host
mListener = (PasswordDialogListener) activity;
} catch (Exception e) {
Log.e("dialog",e.getMessage());
}
}
을 주조 될 나타내는 dialogfragment이다. . . 이것은 우선 메인 코드 확장 클래스가 연장 단편 PreferenceFragmentCompat 및 는
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
addPreferencesFromResource(R.xml.preferences);
Preference preference = findPreference(getString(R.string.printSetting));
/*****Realm*****/
Realm.init(getActivity());
realm = Realm.getDefaultInstance();
preference.setOnPreferenceChangeListener(this);
}
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
DialogFragment PasswordDialogFragment = new password_dialog();
PasswordDialogFragment.show(getFragmentManager(), "Password");
if (passwordIsCorrect) {
return true;
} else {
return false;
}
}
때문에 그것이 때문에 널 포인터 예외를 제공 그 Preference.OnPreferenceChangeListener, password_dialog.PasswordDialogListener 구현 mListier은 초기화되지 않았습니다.