测试片段活动时膨胀类片段时出错

首席牧师

我正在尝试测试一个Activity实现Fragment

当我尝试运行我的应用程序时,出现错误:

错误夸大类片段

我已经读过了,如果您在main中扩展Activity而不是,则会发生这种情况,但是我会在活动本身中继承正确的东西。可能是什么问题?FragmentActivityActivity

我的活动:

package apps.radwin.zxingprojectfragmenttwo;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.View;

public class MainActivity extends FragmentActivity {

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

    public void selectFrag(View view) {
        Fragment objFragment = new FragmentOne();
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
            .replace(R.id.fragment_Two_Id, objFragment)
            .commit();
    }
}

活动布局:

<?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:layout_height="match_parent"
    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="apps.radwin.zxingprojectfragmenttwo.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/textView6" />


    <fragment
        android:id="@+id/fragment_One_Id"
        android:name="apps.radwin.zxingprojectfragmenttwo.FragmentOne"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragment_fragment_one"
        android:layout_below="@+id/fragment_Two_Id"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


    <fragment
        android:id="@+id/fragment_Two_Id"
        android:name="apps.radwin.zxingprojectfragmenttwo.FragmentTwo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        tools:layout="@layout/fragment_fragment_two"
        android:layout_below="@+id/textView6"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Activity Button Change First"
        android:id="@+id/button2"
        android:onClick="selectFrag"
        android:layout_below="@+id/fragment_One_Id"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Activity Button Change Second"
        android:id="@+id/button1"
        android:onClick="selectFrag"
        android:layout_below="@+id/button2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />


</RelativeLayout>

全栈跟踪:

FATAL EXCEPTION: main
Process: apps.radwin.zxingprojectfragmenttwo, PID: 23530
java.lang.RuntimeException: Unable to start activity ComponentInfo {
    apps.radwin.zxingprojectfragmenttwo / apps.radwin.zxingprojectfragmenttwo.MainActivity
}: android.view.InflateException: Binary XML file line #19: Binary XML file line # 19: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 3253)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 3349)
at android.app.ActivityThread.access$1100(ActivityThread.java: 221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1794)
at android.os.Handler.dispatchMessage(Handler.java: 102)
at android.os.Looper.loop(Looper.java: 158)
at android.app.ActivityThread.main(ActivityThread.java: 7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 1120)
Caused by: android.view.InflateException: Binary XML file line #19: Binary XML file line # 19: Error inflating class fragment
at android.view.LayoutInflater.inflate(LayoutInflater.java: 551)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 429)
at android.view.LayoutInflater.inflate(LayoutInflater.java: 380)
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java: 474)
at android.app.Activity.setContentView(Activity.java: 2387)
at apps.radwin.zxingprojectfragmenttwo.MainActivity.onCreate(MainActivity.java: 15)
at android.app.Activity.performCreate(Activity.java: 6876)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java: 1135)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java: 3206)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java: 3349) 
at android.app.ActivityThread.access$1100(ActivityThread.java: 221) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java: 1794) 
at android.os.Handler.dispatchMessage(Handler.java: 102) 
at android.os.Looper.loop(Looper.java: 158) 
at android.app.ActivityThread.main(ActivityThread.java: 7224) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java: 1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java: 1120) 
Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:474) 
at android.app.Activity.setContentView(Activity.java:2387) 
at apps.radwin.zxingprojectfragmenttwo.MainActivity.onCreate(MainActivity.java:15) 
at android.app.Activity.performCreate(Activity.java:6876) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:158) 
at android.app.ActivityThread.main(ActivityThread.java:7224) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: java.lang.RuntimeException: apps.radwin.zxingprojectfragmenttwo.MainActivity@44cf550 must implement OnFragmentInteractionListener
at apps.radwin.zxingprojectfragmenttwo.FragmentOne.onAttach(FragmentOne.java:83)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1019)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230)
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1332)
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2288)
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120)
at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:356)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:380) 
at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:474) 
at android.app.Activity.setContentView(Activity.java:2387) 
at apps.radwin.zxingprojectfragmenttwo.MainActivity.onCreate(MainActivity.java:15) 
at android.app.Activity.performCreate(Activity.java:6876) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1135) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3206) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349) 
at android.app.ActivityThread.access$1100(ActivityThread.java:221) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:158) 
at android.app.ActivityThread.main(ActivityThread.java:7224) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

我的FragmentOne类:

package apps.radwin.zxingprojectfragmenttwo;

import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;


/**
 * A simple {@link Fragment} subclass.
 * Activities that contain this fragment must implement the
 * {@link FragmentOne.OnFragmentInteractionListener} interface
 * to handle interaction events.
 * Use the {@link FragmentOne#newInstance} factory method to
 * create an instance of this fragment.
 */
public class FragmentOne extends Fragment {
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    private OnFragmentInteractionListener mListener;

    public FragmentOne() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment FragmentOne.
     */
    // TODO: Rename and change types and number of parameters
    public static FragmentOne newInstance(String param1, String param2) {
        FragmentOne fragment = new FragmentOne();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_fragment_one, container, false);
    }

    // TODO: Rename method, update argument and hook method into UI event
    public void onButtonPressed(Uri uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    /**
     * This interface must be implemented by activities that contain this
     * fragment to allow an interaction in this fragment to be communicated
     * to the activity and potentially other fragments contained in that
     * activity.
     * <p/>
     * See the Android Training lesson <a href=
     * "http://developer.android.com/training/basics/fragments/communicating.html"
     * >Communicating with Other Fragments</a> for more information.
     */
    public interface OnFragmentInteractionListener {
        // TODO: Update argument type and name
        void onFragmentInteraction(Uri uri);
    }
}
Earthw0rmjim

问题出在您FragmentonAttach()

if (context instanceof OnFragmentInteractionListener) {
    mListener = (OnFragmentInteractionListener) context;
} else {
    throw new RuntimeException(context.toString()
        + " must implement OnFragmentInteractionListener");
}

你检查是否ContextFragment连接到(MainActivity在这种情况下)实现OnFragmentInteractionListener,但它没有,所以RuntimeException被抛出。

根据您要实现的目标,从您的上面删除上面的代码onAttach(),或者制作您的Activity工具OnFragmentInteractionListener

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

膨胀类片段时出错

来自分类Dev

膨胀SupportMapFragment的类片段时出错

来自分类Dev

android.view.InflateException:膨胀类片段时出错?

来自分类Dev

使用FragmentScenario测试片段时如何测试与菜单的交互

来自分类Dev

二进制XML文件第11行:膨胀类片段时出错

来自分类Dev

二进制XML文件第1行:膨胀类片段MapFragment时出错

来自分类Dev

二进制XML文件第2行:膨胀类片段时出错

来自分类Dev

二进制XML文件第15行:膨胀类片段时出错

来自分类Dev

二进制XML文件第1行:膨胀类片段时出错

来自分类Dev

通过片段显示活动时出错

来自分类Dev

浓缩咖啡-如何获取当前活动以测试片段?

来自分类Dev

片段膨胀时出现IndexOutOfBoundsException

来自分类Dev

Android.view.InflateException:启动时膨胀类片段时出错(onCreate中没有错误?)

来自分类Dev

为什么在活动中使用片段时需要膨胀片段的成分?

来自分类Dev

二进制XML文件第14行:膨胀类片段时出错-映射v2

来自分类Dev

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

来自分类Dev

二进制XML文件第14行:膨胀类片段时出错-映射v2

来自分类Dev

领域-在测试类@Before方法上创建这些对象时,无法查询活动/片段内的对象

来自分类Dev

错误:膨胀类片段

来自分类Dev

在向Android应用中的活动添加新片段时出错

来自分类Dev

将参数从活动传递到android中的片段时出错

来自分类Dev

膨胀类ImageButton时出错

来自分类Dev

膨胀类CollapsingToolbarLayout时出错

来自分类Dev

膨胀类RecyclerView时出错

来自分类Dev

膨胀类NavigationView时出错

来自分类Dev

膨胀ListFragment类时出错

来自分类Dev

用Robolectric 3.0测试片段的视图

来自分类Dev

用Robolectric 3.0测试片段

来自分类Dev

用Robolectric 3.0测试片段的视图

Related 相关文章

  1. 1

    膨胀类片段时出错

  2. 2

    膨胀SupportMapFragment的类片段时出错

  3. 3

    android.view.InflateException:膨胀类片段时出错?

  4. 4

    使用FragmentScenario测试片段时如何测试与菜单的交互

  5. 5

    二进制XML文件第11行:膨胀类片段时出错

  6. 6

    二进制XML文件第1行:膨胀类片段MapFragment时出错

  7. 7

    二进制XML文件第2行:膨胀类片段时出错

  8. 8

    二进制XML文件第15行:膨胀类片段时出错

  9. 9

    二进制XML文件第1行:膨胀类片段时出错

  10. 10

    通过片段显示活动时出错

  11. 11

    浓缩咖啡-如何获取当前活动以测试片段?

  12. 12

    片段膨胀时出现IndexOutOfBoundsException

  13. 13

    Android.view.InflateException:启动时膨胀类片段时出错(onCreate中没有错误?)

  14. 14

    为什么在活动中使用片段时需要膨胀片段的成分?

  15. 15

    二进制XML文件第14行:膨胀类片段时出错-映射v2

  16. 16

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

  17. 17

    二进制XML文件第14行:膨胀类片段时出错-映射v2

  18. 18

    领域-在测试类@Before方法上创建这些对象时,无法查询活动/片段内的对象

  19. 19

    错误:膨胀类片段

  20. 20

    在向Android应用中的活动添加新片段时出错

  21. 21

    将参数从活动传递到android中的片段时出错

  22. 22

    膨胀类ImageButton时出错

  23. 23

    膨胀类CollapsingToolbarLayout时出错

  24. 24

    膨胀类RecyclerView时出错

  25. 25

    膨胀类NavigationView时出错

  26. 26

    膨胀ListFragment类时出错

  27. 27

    用Robolectric 3.0测试片段的视图

  28. 28

    用Robolectric 3.0测试片段

  29. 29

    用Robolectric 3.0测试片段的视图

热门标签

归档