在Android.view.inflateexception二进制XML文件中停止了该应用程序

时间:2019-01-31 23:41:05

标签: android gridview

我试图从4小时内解决问题,但找不到答案

这是Grid_dif

public class Grid_dif extends BaseAdapter {
Integer []image_grid2;

Context c;
LayoutInflater inflater;

public Grid_dif( Application applicationContext,Integer[] image_grid2) {
    this.image_grid2 = image_grid2;
    this.c = applicationContext;
    inflater=(LayoutInflater.from(applicationContext));
}

@Override
public int getCount() {
    return image_grid2.length;
}

@Override
public Object getItem(int position) {
    return image_grid2[position];
}

@Override
public long getItemId(int position) {
    return position;
}

@SuppressLint("ViewHolder")
@Override
public View getView(int position, View view, ViewGroup parent) {
    view=inflater.inflate(R.layout.grid_item2,null);
    ImageView image_g=view.findViewById(R.id.image_grid2);
    image_g.setImageResource(image_grid2[position]);
    return view;
}

}

网格item2.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:background="#fff"

    android:layout_height="match_parent">
    <ImageView
        android:layout_width="270dp"
        android:layout_height="150dp"
        android:id="@+id/image_grid2"
        android:src="@drawable/image"
    />

</RelativeLayout>

这是错误

E/InputEventReceiver: Exception dispatching input event. E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback E/MessageQueue-JNI: android.view.InflateException: Binary XML file line #7: Error inflating class <unknown>
        at android.view.LayoutInflater.createView(LayoutInflater.java:633)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
        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.activities.children.Grid_dif.getView(Grid_dif.java:41)
        at android.widget.AbsListView.obtainView(AbsListView.java:2467)
        at android.widget.GridView.makeAndAddView(GridView.java:1438)
        at android.widget.GridView.makeRow(GridView.java:366)
        at android.widget.GridView.fillDown(GridView.java:307)
        at android.widget.GridView.fillGap(GridView.java:267)
        at android.widget.AbsListView.trackMotionScroll(AbsListView.java:5477)
        at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3620)
        at android.widget.AbsListView.onTouchMove(AbsListView.java:4101)
        at android.widget.AbsListView.onTouchEvent(AbsListView.java:3880)
        at android.view.View.dispatchTouchEvent(View.java:8601)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2513)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2157)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2519)
        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2171)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2484)
        at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1800)
        at android.app.Activity.dispatchTouchEvent(Activity.java:2856)
        at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:68)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2445)
        at android.view.View.dispatchPointerEvent(View.java:8807)
        at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4764)
        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4594)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4096)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4149)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4115)
        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4252)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4123)
        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4309)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4096)
        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4149)
        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4115)
        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4123)
        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4096)
        at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6565)
        at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6539)
        at android.vie

1 个答案:

答案 0 :(得分:0)

您的充气机未初始化。将您的getView(..)方法替换为:

public View getView(int position, View view, ViewGroup parent) {
   if(inflater==null)
     inflater = LayoutInflater.from(this.c);

    //it is also unnecessary to reinitialize the view everytime this callback is called. Take advantage of recycling feature of the list.
    if(view ==null)
      view = inflater.inflate(R.layout.grid_item2,null);

    ImageView image_g=view.findViewById(R.id.image_grid2);
    image_g.setImageResource(image_grid2[position]);
    return view;
}

另外,请检查您在构造函数上传递的上下文的类型,它应该是使用适配器的活动,或者如果是其片段,则传递片段getActivity()覆盖。

活动:

new Grid_dif(MyActivity.this, ..);

片段:

new Grid_dif(this.getActivity(), ..)
相关问题