Я мигрирую из PreferenceActivity в PreferenceFragment (v14), и когда я пытаюсь нажать на мою EditTextPreference, приложение вылетает.Код работал с PreferenceActivity, поэтому я не совсем понимаю, почему он генерирует исключение NullPointerException.
Вот важная часть кода:
private Preference websitePref;
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences, rootKey);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = super.onCreateView(inflater, container, savedInstanceState);
view.setBackgroundColor(getResources().getColor(android.R.color.white));
websitePref = findPreference(getString(R.string.preference_key));
websitePref.setIconSpaceReserved(false);
final SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
final String savedWebsite = sharedPrefs.getString(websitePref.getKey(), "");
websitePref.setSummary(savedWebsite);
...
Я попытался изменитьПредпочтение EditTextPreference и приведение его, но я все еще получаю ту же ошибку:
10-05 13:55:36.694 22397-22397/de.test.browserelement E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.test.browserelement, PID: 22397
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.EditText.requestFocus()' on a null object reference
at android.support.v14.preference.EditTextPreferenceDialogFragment.onBindDialogView(EditTextPreferenceDialogFragment.java:66)
at android.support.v14.preference.PreferenceDialogFragment.onCreateDialog(PreferenceDialogFragment.java:149)
at android.app.DialogFragment.onGetLayoutInflater(DialogFragment.java:410)
at android.app.Fragment.performGetLayoutInflater(Fragment.java:1435)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1279)
at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2422)
at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2201)
at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2155)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2056)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:719)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7425)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Вот мой EditTextPreference в моих предпочтениях.xml:
<EditTextPreference
android:defaultValue="@string/preference_default"
android:key="@string/preference_key"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/preference_title"
android:dependency="@string/sperr_key"
android:inputType="textVisiblePassword" />