0

Я пытаюсь создать страницу входа с использованием шаблона Android по умолчанию. Ниже мой код для размещения:android.view.InflateException: двоичная строка XML-файла # 37: ошибка раздувания класса EditText

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center_horizontal" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="com.login.app.logintest.LoginActivity"> 

    <!-- Login progress --> 
    <ProgressBar 
     android:id="@+id/login_progress" 
     style="?android:attr/progressBarStyleLarge" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="8dp" 
     android:visibility="gone" /> 

    <ScrollView 
     android:id="@+id/login_form" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:id="@+id/email_login_form" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

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

       <EditText 
        android:id="@+id/email" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="@string/prompt_email" 
        android:inputType="textEmailAddress" 
        android:maxLines="1" 
        android:singleLine="true" /> 

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

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

       <EditText 
        android:id="@+id/password" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:hint="@string/prompt_password" 
        android:imeActionId="@+id/login" 
        android:imeActionLabel="@string/action_sign_in_short" 
        android:imeOptions="actionUnspecified" 
        android:inputType="textPassword" 
        android:maxLines="1" 
        android:singleLine="true" /> 

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

      <Button 
       android:id="@+id/email_sign_in_button" 
       style="?android:textAppearanceSmall" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:text="@string/action_sign_in" 
       android:textStyle="bold" /> 

     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

Но я получаю исключение инфляции в EditText по электронной почте.

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.login.app.logintest/com.login.app.logintest.LoginActivity}: android.view.InflateException: Binary XML file line #37: Error inflating class EditText 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2790) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2855) 
    at android.app.ActivityThread.access$900(ActivityThread.java:181) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:145) 
    at android.app.ActivityThread.main(ActivityThread.java:6117) 
    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:1399) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
Caused by: android.view.InflateException: Binary XML file line #37: Error inflating class EditText 
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:770) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:813) 

Пожалуйста, предложите решение. FYI Я использую версию 2.1 в версии Android в Android Studio.

Спасибо, Рахул

+0

какую версию библиотеки дизайна вы используете? – kgandroid

+0

почему вам нужен андроид: imeActionLabel в xml? используйте setImeActionLabel вместо этого в коде editText.setImeActionLabel (getString (R.string.xxx), EditorInfo.IME_ACTION_GO); Точно так же вы намерены сделать это в этом https://developer.android.com/guide/topics/ui/controls/text.html? – Stallion

ответ

0

Вместо использования андроида: imeActionLabel в XML-файл, попробуйте переместить его в Java код, как этот

editText.setImeActionLabel(getString(R.string.your_string), EditorInfo.IME_ACTION_GO); 

Если вы не собираетесь делать предопределенное действие с IME опциона то лучше избегать , android:imeActionLabel и android:imeOptions. Для получения дополнительной информации ознакомьтесь this link

0

Попробуйте использовать android.support.v7.widget.AppCompatEditText

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

      <android.support.v7.widget.AppCompatEditText 
       ............ /> 

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

Убедитесь, что вы используете дизайн библиотеки выше 22.2.1, как показано ниже:

dependencies { 
compile 'com.android.support:appcompat-v7:23.0.1' 
compile 'com.android.support:design:23.0.1' 
}