web-dev-qa-db-ja.com

サポートデザインライブラリからの新しいTextInputLayoutの使用中のRuntimeException

デザインサポートライブラリ から新しいAndroid.support.design.widget.TextInputLayoutビューを使用する非常にシンプルなレイアウトがあります

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/til"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content">
    <EditText
        Android:id="@+id/textDialog"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:hint="First Name"/>
</Android.support.design.widget.TextInputLayout>

膨らませると例外が発生します:

Caused by: Java.lang.RuntimeException: Failed to resolve attribute at index 18
            at Android.content.res.TypedArray.getColor(TypedArray.Java:401)
            at Android.support.design.widget.CollapsingTextHelper.setCollapsedTextAppearance(CollapsingTextHelper.Java:166)
            at Android.support.design.widget.TextInputLayout.<init>(TextInputLayout.Java:106)
            at Java.lang.reflect.Constructor.newInstance(Native Method)
            at Java.lang.reflect.Constructor.newInstance(Constructor.Java:288)
            at Android.view.LayoutInflater.createView(LayoutInflater.Java:607)
            at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:743)
            at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:806)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:504)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:414)
            at Android.view.LayoutInflater.inflate(LayoutInflater.Java:365)
            at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:381)
            at Android.app.Activity.setContentView(Activity.Java:2144)
            at com.example.trybindinglib.MainActivity.onCreate(MainActivity.Java:24)
            at Android.app.Activity.performCreate(Activity.Java:5933)
            at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1105)
            at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2298)
            at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2407)
            at Android.app.ActivityThread.access$800(ActivityThread.Java:149)
            at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1324)
            at Android.os.Handler.dispatchMessage(Handler.Java:102)
            at Android.os.Looper.loop(Looper.Java:211)
            at Android.app.ActivityThread.main(ActivityThread.Java:5321)
            at Java.lang.reflect.Method.invoke(Native Method)
            at Java.lang.reflect.Method.invoke(Method.Java:372)
            at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:1016)
            at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:811)
14
Aleksey Masny

デザインサポートライブラリを追加しましたか?依存関係を追加します。

compile 'com.Android.support:design:22.2.0'

build.gradleに

15
Luchi Valles

ベースアプリケーションテーマとしてTheme.AppCompatを使用している場合は、その中でtextColorErrorを定義します。 TextInputLayoutは、エラー状態で使用する必要があります。それ以外の場合は、上記のようにクラッシュログが表示されます。

例:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="textColorError"> @color/design_textinput_error_color_light </item>
</style>

@color/design_textinput_error_color_lightの場合はAppCompat.Light@color/design_textinput_error_color_darkの場合はAppCompat.Darkです。

9
Asha Antony

アプリのテーマがAppCompatのテーマを拡張していることを確認してください。

    <!-- Base application theme. -->
    <style name="AppTheme" parent="@style/Theme.AppCompat">
        <!-- Customize your theme here. -->
    </style>
6
Aleksey Masny

Android Studioで生成された生のアプリケーションでも同じ問題が発生しました。

最初に次の依存関係をbuild.gradleコンパイルに追加することで解決しました'com.Android.support:appcompat-v7:22.2.0'

次に、Alekseyの提案に従って、テーマベースを@ style/Theme.AppCompatに変更する必要がありました。ここで、appcompatライブラリに同じ名前(AppTheme)のテーマがあり、ASが2つの間で混乱しているように見えるため、ベーステーマの名前を変更する必要があることに注意してください...

お役に立てれば!

4
malrok44

getColorがクラッシュします。次の2つのことを試すことができます。

1. EditTextを使用する代わりに、Android.support.v7.widget.AppCompatEditTextを使用します。例えば:

<Android.support.design.widget.TextInputLayout
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                app:errorEnabled="true">
                <Android.support.v7.widget.AppCompatEditText
                    Android:layout_width="match_parent"
                    Android:layout_height="wrap_content"
                    Android:hint="First Name"
                    Android:inputType="textPersonName"
                    Android:singleLine="true" />

</Android.support.design.widget.TextInputLayout>

2.それでも問題が解決しない場合は、問題が発生する可能性がありますが、入力フィールドを選択するとヒントの色が削除されます。追加:

            app:hintTextAppearance="@Android:style/TextAppearance.Small"

textInputLayoutに。

1
Frank

XMLが次のようになっていることを確認してください。

<Android.support.design.widget.TextInputLayout
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content">

    <EditText
        Android:id="@+id/search"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:hint="search" />
</Android.support.design.widget.TextInputLayout>

完全な例:

http://hmkcode.com/Android-textinputlayout/

ThemeStyleの変更は必要ありません

1
itzhar