我发现了以下问题。我使用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提出明智的建议!