对话框视图必须包含ID为@android:id/edit的EditText [英] Dialog view must contain an EditText with id @android:id/edit

查看:108
本文介绍了对话框视图必须包含ID为@android:id/edit的EditText的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用support:preference-v7:25.0.1,在我的应用程序中,我正在使用PreferenceActivity来设置具有EditText的用户名.运行我的应用程序时,在运行时出现以下错误:

I'm using support:preference-v7:25.0.1 and in my app I'm using an PreferenceActivity to set username with an EditText. When I run my app, at runtime I get the following error:

E/AndroidRuntime: FATAL EXCEPTION: main
      Process: it.company.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)

为什么会出现此错误?我该如何解决这个问题? 谢谢大家.

Why I get this error? How can I resolve this problem? Thank you to all.

推荐答案

不幸的是,这是Google上的一个错误,我已经提交了一个错误问题 https://code.google.com/p/android/issues/detail ?id = 231576

Sadly, this is a mistake on Google and I have filed a bug issue https://code.google.com/p/android/issues/detail?id=231576

与此同时解决此问题的方法是:

The hack to get around this in the mean time is to:

创建此布局

<?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);

Then after you create your object (EditTextPreference editTextPreference = new EditTextPreference(context)), call setDialogLayoutResource(R.layout.THE_LAYOUT_ABOVE);

这将立即解决问题

这篇关于对话框视图必须包含ID为@android:id/edit的EditText的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆