android.view.InflateException:二进制XML文件行#7:膨胀类片段时出错

android.view.InflateException:二进制XML文件行#7:膨胀类片段时出错,android,android-fragments,Android,Android Fragments,我知道类似的问题已经得到了回答,但我似乎已经按照教程的建议做了,并且阅读了其他帖子,但我仍然得到了充气机的错误。不知道我做错了什么。请检查代码。非常感谢 编辑:我在一个活动中有两个片段。我在一个片段中有一个按钮,在另一个片段中有一个文本视图。我试图理解片段是如何工作的,所以在阅读了文档之后,我自己编写了这段代码。当按钮在一个片段中被触发时,它会向活动中的另一个片段发送一个值。我无法使碎片膨胀 MainActivity.java import com.transport.mbtal

我知道类似的问题已经得到了回答,但我似乎已经按照教程的建议做了,并且阅读了其他帖子,但我仍然得到了充气机的错误。不知道我做错了什么。请检查代码。非常感谢

编辑:我在一个活动中有两个片段。我在一个片段中有一个按钮,在另一个片段中有一个文本视图。我试图理解片段是如何工作的,所以在阅读了文档之后,我自己编写了这段代码。当按钮在一个片段中被触发时,它会向活动中的另一个片段发送一个值。我无法使碎片膨胀

MainActivity.java

        import com.transport.mbtalocpro.PredictedTimeFragment.ButtonClickListener;
        import android.os.Bundle;
        import android.support.v4.app.FragmentActivity;


        public class MainActivity extends FragmentActivity implements ButtonClickListener {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }


            @Override
            public void sendCounter(int count) {
                TestFrag testF = (TestFrag) getSupportFragmentManager().findFragmentById(R.id.bottomHalf);
                if(testF != null) testF.setCounter(String.valueOf(count));

            }

        }
            import android.app.Activity;
            import android.os.Bundle;
            import android.support.v4.app.Fragment;
            import android.view.InflateException;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.View.OnClickListener;
            import android.view.ViewGroup;
            import android.widget.Button;

            public class PredictedTimeFragment extends Fragment {


            ButtonClickListener bListener;

            public interface ButtonClickListener {
                public void sendCounter(int count);
            }

            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflater, container, savedInstanceState);
                try {
                    View view = inflater.inflate(R.layout.prediction_time, container, false);
                    Button button = (Button) view.findViewById(R.id.test);
                    button.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            test(v);

                        }
                    });
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Predicted Time Fragment");
                }
                return super.onCreateView(inflater, container, savedInstanceState);
            }

            public void onAttach(Activity activity) {
                  super.onAttach(activity);
                  try {
                    bListener = (ButtonClickListener) activity;
                  } catch (ClassCastException e) {
                     System.out.println("must implemenet Listener");
                  }
                }


            public void test(View view) {
                bListener.sendCounter(23);
            }

        }
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.view.InflateException;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;

        public class TestFrag extends Fragment {

            @Override
            public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflator, container, savedInstanceState);
                try {
                    View view = inflator.inflate(R.layout.test_frag, container, false);
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Test Fragment");
                }
                return super.onCreateView(inflator, container, savedInstanceState);
            }

            public void setCounter(String textS) {
                TextView text = (TextView) getView().findViewById(R.id.test1);
                text.setText((String) textS);
            }
        }
PredictedTimeFragment.java

        import com.transport.mbtalocpro.PredictedTimeFragment.ButtonClickListener;
        import android.os.Bundle;
        import android.support.v4.app.FragmentActivity;


        public class MainActivity extends FragmentActivity implements ButtonClickListener {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }


            @Override
            public void sendCounter(int count) {
                TestFrag testF = (TestFrag) getSupportFragmentManager().findFragmentById(R.id.bottomHalf);
                if(testF != null) testF.setCounter(String.valueOf(count));

            }

        }
            import android.app.Activity;
            import android.os.Bundle;
            import android.support.v4.app.Fragment;
            import android.view.InflateException;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.View.OnClickListener;
            import android.view.ViewGroup;
            import android.widget.Button;

            public class PredictedTimeFragment extends Fragment {


            ButtonClickListener bListener;

            public interface ButtonClickListener {
                public void sendCounter(int count);
            }

            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflater, container, savedInstanceState);
                try {
                    View view = inflater.inflate(R.layout.prediction_time, container, false);
                    Button button = (Button) view.findViewById(R.id.test);
                    button.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            test(v);

                        }
                    });
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Predicted Time Fragment");
                }
                return super.onCreateView(inflater, container, savedInstanceState);
            }

            public void onAttach(Activity activity) {
                  super.onAttach(activity);
                  try {
                    bListener = (ButtonClickListener) activity;
                  } catch (ClassCastException e) {
                     System.out.println("must implemenet Listener");
                  }
                }


            public void test(View view) {
                bListener.sendCounter(23);
            }

        }
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.view.InflateException;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;

        public class TestFrag extends Fragment {

            @Override
            public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflator, container, savedInstanceState);
                try {
                    View view = inflator.inflate(R.layout.test_frag, container, false);
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Test Fragment");
                }
                return super.onCreateView(inflator, container, savedInstanceState);
            }

            public void setCounter(String textS) {
                TextView text = (TextView) getView().findViewById(R.id.test1);
                text.setText((String) textS);
            }
        }
TestFrag.java

        import com.transport.mbtalocpro.PredictedTimeFragment.ButtonClickListener;
        import android.os.Bundle;
        import android.support.v4.app.FragmentActivity;


        public class MainActivity extends FragmentActivity implements ButtonClickListener {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
            }


            @Override
            public void sendCounter(int count) {
                TestFrag testF = (TestFrag) getSupportFragmentManager().findFragmentById(R.id.bottomHalf);
                if(testF != null) testF.setCounter(String.valueOf(count));

            }

        }
            import android.app.Activity;
            import android.os.Bundle;
            import android.support.v4.app.Fragment;
            import android.view.InflateException;
            import android.view.LayoutInflater;
            import android.view.View;
            import android.view.View.OnClickListener;
            import android.view.ViewGroup;
            import android.widget.Button;

            public class PredictedTimeFragment extends Fragment {


            ButtonClickListener bListener;

            public interface ButtonClickListener {
                public void sendCounter(int count);
            }

            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflater, container, savedInstanceState);
                try {
                    View view = inflater.inflate(R.layout.prediction_time, container, false);
                    Button button = (Button) view.findViewById(R.id.test);
                    button.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            test(v);

                        }
                    });
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Predicted Time Fragment");
                }
                return super.onCreateView(inflater, container, savedInstanceState);
            }

            public void onAttach(Activity activity) {
                  super.onAttach(activity);
                  try {
                    bListener = (ButtonClickListener) activity;
                  } catch (ClassCastException e) {
                     System.out.println("must implemenet Listener");
                  }
                }


            public void test(View view) {
                bListener.sendCounter(23);
            }

        }
        import android.os.Bundle;
        import android.support.v4.app.Fragment;
        import android.view.InflateException;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.TextView;

        public class TestFrag extends Fragment {

            @Override
            public View onCreateView(LayoutInflater inflator, ViewGroup container, Bundle savedInstanceState) {
                super.onCreateView(inflator, container, savedInstanceState);
                try {
                    View view = inflator.inflate(R.layout.test_frag, container, false);
                } catch(InflateException e) {
                    e.printStackTrace();
                    System.out.println("Test Fragment");
                }
                return super.onCreateView(inflator, container, savedInstanceState);
            }

            public void setCounter(String textS) {
                TextView text = (TextView) getView().findViewById(R.id.test1);
                text.setText((String) textS);
            }
        }
活动\u main.xml

        <?xml version="1.0" encoding="utf-8"?>
        <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:orientation="vertical">

            <fragment 
                android:id="@+id/topHalf"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name="com.transport.mbtalocpro.PredictedTimeFragment"/>

            <fragment
                android:id="@+id/bottomHalf"        
                android:layout_width="fill_parent"        
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name ="com.transport.mbtalocpro.TestFrag"/>

        </LinearLayout>
        <?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="match_parent"
            android:orientation="vertical" >

            <Button 
                android:id="@+id/test"
                android:text="Test"
                android:layout_width="fill_parent"
                android:layout_height="30dp"
                />

        </LinearLayout>
        <?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="match_parent"
            android:orientation="vertical" >

            <TextView 
                android:id="@+id/test1"
                android:layout_width="fill_parent"
                android:layout_height="40dp"/>

        </LinearLayout>

预测时间.xml

        <?xml version="1.0" encoding="utf-8"?>
        <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:orientation="vertical">

            <fragment 
                android:id="@+id/topHalf"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name="com.transport.mbtalocpro.PredictedTimeFragment"/>

            <fragment
                android:id="@+id/bottomHalf"        
                android:layout_width="fill_parent"        
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name ="com.transport.mbtalocpro.TestFrag"/>

        </LinearLayout>
        <?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="match_parent"
            android:orientation="vertical" >

            <Button 
                android:id="@+id/test"
                android:text="Test"
                android:layout_width="fill_parent"
                android:layout_height="30dp"
                />

        </LinearLayout>
        <?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="match_parent"
            android:orientation="vertical" >

            <TextView 
                android:id="@+id/test1"
                android:layout_width="fill_parent"
                android:layout_height="40dp"/>

        </LinearLayout>

测试框架.xml

        <?xml version="1.0" encoding="utf-8"?>
        <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:orientation="vertical">

            <fragment 
                android:id="@+id/topHalf"
                android:layout_width="fill_parent"
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name="com.transport.mbtalocpro.PredictedTimeFragment"/>

            <fragment
                android:id="@+id/bottomHalf"        
                android:layout_width="fill_parent"        
                android:layout_height="0dp"
                android:layout_weight="0.5"
                android:name ="com.transport.mbtalocpro.TestFrag"/>

        </LinearLayout>
        <?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="match_parent"
            android:orientation="vertical" >

            <Button 
                android:id="@+id/test"
                android:text="Test"
                android:layout_width="fill_parent"
                android:layout_height="30dp"
                />

        </LinearLayout>
        <?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="match_parent"
            android:orientation="vertical" >

            <TextView 
                android:id="@+id/test1"
                android:layout_width="fill_parent"
                android:layout_height="40dp"/>

        </LinearLayout>


我也在尝试支持蜂蜜梳之前的版本,我想我正在导入所有的支持库

尝试用android.support.v4.app.fragment替换xml中的片段


编辑:在onCreateView中处理完视图后,也可以尝试调用super,即只调用一次。删除开头对super的调用,并查看这是否有助于在
onCreateView
回调中返回您已充气的
视图。这样系统就知道要绘制哪个
视图
。否则,如果只返回
super.onCreateView(…)这样,就不会出现UI

试试这个:

public View onCreateView(LayoutInflater inflater,
                         ViewGroup container,
                         Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    try {
        View view = inflater.inflate(R.layout.prediction_time, container, false);
        Button button = (Button) view.findViewById(R.id.test);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                test(v);
            }
        });
    } catch(InflateException e) {
        e.printStackTrace();
        System.out.println("Predicted Time Fragment");
    }
    return view;
}

相应地更改其他
片段的返回值。

删除导入语句:

import android.support.v4.app.FragmentActivity;
然后使用弹出的导入建议再次导入。我不知道为什么,但它总是对我有用

import android.support.v4.app.FragmentActivity; 
要修复错误,请执行以下操作:

在舱单中:

<application
        android:largeHeap="true"

因为该错误是内存不足错误

更改布局小部件id,所以它对我有效。

到处乱扔代码可能不会鼓励有人帮助你。一些基本的细节会很棒。@WarrenFaith-我添加了一些关于代码的细节。很抱歉。我很着急。谢谢。在onCreateView的基础上,您不需要片段中的任何一个超级调用;只需返回您的视图。您是否尝试删除对super的呼叫?既然你叫了两次。你能发布日志吗?事实上,我重新编辑了我的工作,它开始工作了,我相信它可能是xml中片段中的名称(android:name),我将它更改为class=“片段类的名称”,但我以前做过一次,它没有工作。不知道为什么上面的代码不起作用。无论如何,谢谢你的帮助。我只是注意到这是一个旧的,有一个正确的解决方案wkhatch的意见。
import android.support.v4.app.FragmentActivity;