使用TextInputLayout的片段会在Android Marshmallow上崩溃应用程序

时间:2016-07-07 13:46:33

标签: android android-fragments material-design android-6.0-marshmallow

我发现了以下问题。我使用Material Design' XML布局中的类android.support.design.widget.TextInputLayout

当我在片段中对此布局进行充气时,我的应用程序会出现以下错误:

android.view.InflateException: Binary XML file line #563: Error inflating class <unknown>

使用 Android 6.0.1 三星Galaxy S7 上出现下降。当我使用 Android 4.4.2 联想A319 上启动应用时,一切顺利,没有崩溃。 当我使用带有android.support.design.widget.TextInputLayout类的XML布局进行活动(没有任何片段)时, Galaxy S7 也能正常工作。

当应用尝试在片段中试用android.support.design.widget类时,似乎Marshmallow出现了问题。

有什么方法可以解决这个问题吗?

这是我的代码:

DocumentEditFragment.java

public class DocumentEditFragment extends BaseFragment {
...
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View view = inflater.inflate(R.layout.fragment_document_edit, container, false); // The app falls here on Galaxy S7
...
}

DocumentActivity.java

public class DocumentActivity extends AppCompatActivity {
    private DocumentEditFragment docEditFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_document);
        docEditFragment = new DocumentEditFragment();
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.replace(R.id.fragment_document, docEditFragment);
        ft.commit();
    }
}

fragment_document_edit.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_margin="0dp"

    <ScrollView
    android:id="@+id/doc_edit_scroll_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:layout_marginLeft="16dp"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    >
...
<!-- line #563 is below: -->
        <android.support.design.widget.TextInputLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="22dp"
        android:layout_marginLeft="60dp"
        android:layout_marginRight="16dp"
        app:errorEnabled="true"
        android:theme="@style/TextLabel"
        >

        <android.support.v7.widget.AppCompatEditText
            android:id="@+id/doc_edit_comment"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="14sp"
            android:text="1st line\n2nd line"
            android:singleLine="false"
            android:hint="Comment"
            android:textColorHint="#69202020"
            />

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

    </ScrollView>

</LinearLayout>

activity_document.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/fragment_document"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="my.app.DocumentFragment"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
tools:context="my.app.DocumentFragment"
/>

更新

我已经上传了在 Galaxy S7 edge 上产生相同错误的示例项目,因为我的工作项目(我无法公开公司项目)。这是存储库link

解决

我已移动了该属性 android:theme="@style/TextLabel"<android.support.design.widget.TextInputLayout /><android.support.v7.widget.AppCompatEditText /> - 一切都很顺利!感谢Udacity的Nico提出明智的建议!

0 个答案:

没有答案