EditTextPreference аварийно завершает работу по requestFocus () - PullRequest
0 голосов
/ 05 октября 2018

Я мигрирую из 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" />

1 Ответ

0 голосов
/ 31 октября 2018

У меня была такая же проблема.По какой-то причине он не устанавливает макет диалога по умолчанию.

Попробуйте привести его к EditTextPreference и добавьте следующую строку кода: websitePref.setDialogLayoutResource (R.layout.preference_dialog_edittext);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...