2016-12-13 2 views
3

Я использую support:preference-v7:25.0.1, а в своем приложении я использую PreferenceActivity, чтобы установить имя пользователя EditText. Когда я запускаю свое приложение, во время выполнения я получаю следующую ошибку:Диалоговое представление должно содержать EditText с идентификатором @android: id/edit

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: it.insoft.android.aaaa, PID: 8023 
        java.lang.IllegalStateException: Dialog view must contain an EditText with id @android:id/edit 
         at android.support.v7.preference.EditTextPreferenceDialogFragmentCompat.onBindDialogView(EditTextPreferenceDialogFragmentCompat.java:67) 
         at android.support.v7.preference.PreferenceDialogFragmentCompat.onCreateDialog(PreferenceDialogFragmentCompat.java:148) 
         at android.support.v4.app.DialogFragment.getLayoutInflater(DialogFragment.java:312) 
         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1113) 
         at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1295) 
         at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801) 
         at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1682) 
         at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:541) 
         at android.os.Handler.handleCallback(Handler.java:733) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:157) 
         at android.app.ActivityThread.main(ActivityThread.java:5633) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:515) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:896) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:712) 
         at dalvik.system.NativeStart.main(Native Method) 

Почему я получаю эту ошибку? Как я могу решить эту проблему? Спасибо всем.

+0

вы используете поддержку 'DialogFragment' с пользовательским представлением. в этом обычном xml вам нужно добавить 'android: id =" @ android: id/edit "' в 'EditText' – zombie

+0

Нет, такая же проблема. – Insoft

+0

Я заметил с поддержкой: preference-v7: 23.0.0 все работает отлично !! – Insoft

ответ

4

К сожалению, это ошибка на Google, и я подал Issue багом https://code.google.com/p/android/issues/detail?id=231576

Хак, чтобы обойти это в то же время является:

Создать этот макет

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="48dp" 
    android:layout_marginBottom="48dp" 
    android:overScrollMode="ifContentScrolls"> 

    <LinearLayout 
     android:id="@+id/edittext_container" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:padding="20dp" 
     android:orientation="vertical"> 

     <EditText 
      android:id="@android:id/edit" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingStart="4dp" 
      android:paddingEnd="4dp" /> 

    </LinearLayout> 

</ScrollView> 

Затем, после того как вы создадите свой объект (EditTextPreference editTextPreference = new EditTextPreference(context)), позвоните по телефону setDialogLayoutResource(R.layout.THE_LAYOUT_ABOVE);

Это решит проблему на данный момент

+1

Еще более печально, что они закрыли проблему из-за отсутствия дополнительной информации. –

Смежные вопросы