android.support.design.widget.TextInputLayout给出了InflateException

时间:2015-07-22 14:31:14

标签: android android-textinputlayout

我正在尝试在设计库中使用TextInputLayout,并添加了支持库,如下所示:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile "com.android.support:support-v4:+"
    compile 'com.squareup.picasso:picasso:2.3.2'
    compile 'com.nineoldandroids:library:2.4.0'
    compile 'com.daimajia.slider:library:1.1.5@aar'
    compile 'com.navercorp.pulltorefresh:library:3.2.0@aar'
    compile fileTree(dir: 'libs', include: 'Parse-*.jar')
    compile fileTree(dir: 'libs', include: 'ParseCrashReporting-*.jar')
    compile 'uk.co.chrisjenx:calligraphy:2.1.0'
    compile 'com.android.support:design:22.2.1'
}

然而,它给了我以下错误。可能是什么原因造成的?

E/AndroidRuntime﹕ FATAL EXCEPTION: main
        android.view.InflateException: Binary XML file line #12: Error inflating class android.support.design.widget.TextInputLayout
                at android.view.LayoutInflater.createView(LayoutInflater.java:613)
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                at com.myproject.fragments.LostPropertyCheckFragment.onCreateView(LostPropertyCheckFragment.java:48)
                at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
                at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
                at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
                at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
                at android.os.Handler.handleCallback(Handler.java:615)
                at android.os.Handler.dispatchMessage(Handler.java:92)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:4921)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.reflect.InvocationTargetException
                at java.lang.reflect.Constructor.constructNative(Native Method)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                at com.myproject.fragments.LostPropertyCheckFragment.onCreateView(LostPropertyCheckFragment.java:48)
                at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
                at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
                at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
                at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
                at android.os.Handler.handleCallback(Handler.java:615)
                at android.os.Handler.dispatchMessage(Handler.java:92)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:4921)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.UnsupportedOperationException: Can't convert to color: type=0x2
                at android.content.res.TypedArray.getColor(TypedArray.java:326)
                at android.support.design.widget.CollapsingTextHelper.setCollapsedTextAppearance(CollapsingTextHelper.java:166)
                at android.support.design.widget.TextInputLayout.<init>(TextInputLayout.java:124)
                at java.lang.reflect.Constructor.constructNative(Native Method)
                at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                at com.myproject.fragments.LostPropertyCheckFragment.onCreateView(LostPropertyCheckFragment.java:48)
                at android.support.v4.app.Fragment.performCreateView(Fragment.java:1789)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:955)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
                at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
                at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
                at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
                at android.os.Handler.handleCallback(Handler.java:615)
                at android.os.Handler.dispatchMessage(Handler.java:92)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:4921)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:511)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
                at dalvik.system.NativeStart.main(Native Method)

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:layout_marginRight="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="70dp"
    android:background="@color/white"
    android:clickable="true"
    android:orientation="vertical" >

    <android.support.design.widget.TextInputLayout
        android:id="@+id/text_input_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/trackno"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/track_no"
            android:inputType="number" />
    </android.support.design.widget.TextInputLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right|center_vertical"
        android:layout_marginTop="5dp">

        <Button
            android:id="@+id/check"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="@color/fav_light_green"
            android:gravity="center"
            android:padding="5dp"
            android:text="@string/check"
            android:textColor="@color/white" >
        </Button>
    </LinearLayout>

</LinearLayout>

片段

public class LostPropertyCheckFragment extends Fragment {

    EditText trackno;
    Button check;
    Dialog dialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Get back arguments
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Defines the xml file for the fragment
        View view = inflater.inflate(R.layout.lostpropertycheck_fragment,
                container, false);

        trackno = (EditText) view.findViewById(R.id.trackno);
        check = (Button) view.findViewById(R.id.check);

        check.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                if (trackno.getText().toString().trim().equalsIgnoreCase("")) {
                    Toast.makeText(
                            getActivity(),
                            getActivity().getResources().getString(
                                    R.string.formwarning), Toast.LENGTH_LONG)
                            .show();
                }

                else {
                    new checkLostProperty().execute();
                }

            }
        });

        return view;
    }

    private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getActivity()
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        return activeNetworkInfo != null && activeNetworkInfo.isConnected();
    }

    public static LostPropertyCheckFragment newInstance() {
        LostPropertyCheckFragment fragment = new LostPropertyCheckFragment();

        return fragment;
    }

样式

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.

        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
        <!--<item name="android:textViewStyle">@style/AppTheme.Widget.TextView</item>-->
       <!-- <item name="textFieldStyle">@style/IconTextViewStyle</item>-->
    </style>

    <style name="IconTextViewStyle"
        parent="android:Widget.TextView">
        <item name="fontPath">fonts/icomoon.ttf</item>
    </style>

    <attr name="textFieldStyle"
        format="reference" />



    <!--<style name="AppTheme.Widget"/>

    <style name="AppTheme.Widget.TextView" parent="android:Widget.Holo.Light.TextView">
        <item name="fontPath">fonts/opensansregular.ttf</item>
    </style>-->

</resources>

2 个答案:

答案 0 :(得分:3)

在我的gradle中没有任何改变我通过添加:

简单地解决了我的问题
app:hintTextAppearance="@android:style/TextAppearance.Medium"

我希望这可以帮助某人

答案 1 :(得分:1)

您应该尝试一些方法来解决问题。

  • 从AppCompatActivity扩展您的活动
  • 从android.support.v4.app.Fragment扩展你的片段(你需要在build.gradle文件中添加支持库,如果没有添加)。
  • 您应该使用22.2.1或更高版本的设计库(在发布时,最新版本是&#39; com.android.support:design:23.0.0&#39;)以获得正确的&#39;暗示&#39;棒棒糖及以上设备上的行为。如果您使用的是低于22.2.1的版本,则会遇到问题on stackOverflow。 (在你的情况下,你已经在使用22.2.1)。
  • 使用android.support.v7.widget.AppCompatEditText而不是使用EditText。

    • 例如:

      <android.support.design.widget.TextInputLayout
                      android:id="@+id/tl_firstName"
                      android:layout_width="match_parent"
                      android:layout_height="wrap_content"
                      app:errorEnabled="true">
      
                      <android.support.v7.widget.AppCompatEditText
                          android:id="@+id/editText_firstName"
                          style="@style/editProfile_editText"
                          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>