android.view.InflateException:二进制XML文件:夸大类片段的错误


151

我有一个非常令人沮丧的错误,无法解释。我创建了一个Android应用程序,用于Android AppCompat使其与旧版本兼容。这是我的主要活动布局文件:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- As the main content view, the view below consumes the entire
         space available using match_parent in both dimensions. -->
    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- android:layout_gravity="start" tells DrawerLayout to treat
         this as a sliding drawer on the left side for left-to-right
         languages and on the right side for right-to-left languages.
         If you're not building against API 17 or higher, use
         android:layout_gravity="left" instead. -->

    <!-- The drawer is given a fixed width in dp and extends the full height of
         the container. -->
    <fragment android:id="@+id/navigation_drawer"
        android:layout_width="@dimen/navigation_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:name="com.fragment.NavigationDrawerFragment" />

</android.support.v4.widget.DrawerLayout>

这是我的活动的主要代码:

public class MainActivity extends ActionBarActivity {
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
   }
}

这里的主要问题是:上面的代码在几乎所有设备(受激设备或某些实际设备)上都能流畅运行。但是当我在三星S3上运行它时。它注意到此错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{view.MainActivity}: android.view.InflateException: Binary XML file line #25: Error inflating class fragment
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2081)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2106)
            at android.app.ActivityThread.access$700(ActivityThread.java:134)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1217)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4856)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: android.view.InflateException: Binary XML file line #25: Error inflating class fragment
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:316)
            at android.app.Activity.setContentView(Activity.java:1901)
            at android.support.v7.app.ActionBarActivity.superSetContentView(ActionBarActivity.java:208)
            at android.support.v7.app.ActionBarActivityDelegateICS.setContentView(ActionBarActivityDelegateICS.java:111)
            at android.support.v7.app.ActionBarActivity.setContentView(ActionBarActivity.java:76)

请告诉我如何解决错误,谢谢:)


1
在这行你得到的异常检查类名和包名是否正确not..android:NAME =“com.hqt.hac.view.fragment.NavigationDrawerFragment”
格利扬PVS

1
我已经检查过了,这堂课是对的。我可以编译并在某些设备上运行,但不能在三星s3上运行。我认为这里有些奇怪的问题:(
hqt

你是正确的,如果它是一些设备上执行,而不是在S3这是一个奇怪的problem..my的建议是一次尝试使用sherlacFragment赤一次..
格利扬PVS

我已经在这里解决了问题:stackoverflow.com/a/33128448/4366715
丹尼尔·基林斯卡斯

1
对于那些试图诊断此错误原因的人:此处的轶事解决是个麻烦。在片段膨胀期间发生了一个先验异常,该异常没有出现在堆栈跟踪中。可能是任何东西。要解决此问题,您必须找出什么是先前的异常。为此,请参阅我的答案或@DaveHubbard的答案。
LarsH

Answers:


126

经过长时间的调试,我已解决此问题。(尽管我仍然无法解释原因)。我将财产更改android:nameclass。(尽管在Android Document上,他们说这些属性是相同的,但是可以用!)

因此,它应从:

 android:name="com.fragment.NavigationDrawerFragment"

class = "com.fragment.NavigationDrawerFragment"

因此,新布局应为:

<!-- As the main content view, the view below consumes the entire
     space available using match_parent in both dimensions. -->
<FrameLayout
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<!-- android:layout_gravity="start" tells DrawerLayout to treat
     this as a sliding drawer on the left side for left-to-right
     languages and on the right side for right-to-left languages.
     If you're not building against API 17 or higher, use
     android:layout_gravity="left" instead. -->

<!-- The drawer is given a fixed width in dp and extends the full height of
     the container. -->
<fragment android:id="@+id/navigation_drawer"
    android:layout_width="@dimen/navigation_drawer_width"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    class = "com.fragment.NavigationDrawerFragment" />

希望这个帮助:)


4
在尝试遵循官方Android教程时遇到了这个问题。您的解决方案(更改android:idclass)对我有用。我也收到了Lint警告,要求将其更改Fragmentfragment
stevepastelan 2013年

9
@DownVoter:此错误令人困惑。而且我很幸运地找到了解决方法。如果我的帖子无法解决您的错误,我非常抱歉,因为我也无法解释原因。但是我认为它不应该受到否决。:)
hqt

2
我想知道,如果你有这个崩溃可靠更改nameclass,我有一些用户报告此崩溃,但不能瑞普它自己!
丹尼尔·威尔逊

8
对我不起作用。我很累。2小时的开发时间,找不到原因(二进制xml文件行...错误膨胀类片段)。任何想法 ?
Cocorico 2015年

32

我无法使用提供的答案来解决我的问题。最后我改变了这个:

<fragment
android:id="@+id/fragment_food_image_gallery"
android:name="ir.smartrestaurant.ui.fragment.ImageGalleryFragment"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout="@layout/fragment_image_gallery"
tools:layout="@layout/fragment_image_gallery" />

对此:

<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="200dp" />

private void showGallery() {
    ImageGalleryFragment fragment = new ImageGalleryFragment()
    getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, fragment)
                .commit();
    }

而且有效。
如果在片段中使用它,请使用getChildFragmentManager而不是getSupportFragmentManager


31

TL / DR在创建从高层布局XML引用的片段期间发生异常。此异常导致更高级别的布局膨胀失败,但未报告初始异常;堆栈跟踪中仅显示较高级别的通货膨胀失败。为了找到根本原因,您必须捕获并记录初始异常


错误的最初原因可能是多种多样的,这就是为什么对于每个人解决问题的方式有这么多不同的答案的原因。一些人认为,它曾与做idclassname属性。对于其他用户,这是由于权限问题或构建设置引起的。对我来说,那些并不能解决问题。取而代之的是有一个可绘制的资源,它仅存在于drawable-ldrtl-xhdpi而不是类似的适用地方drawable

但这只是细节。最大的问题是,logcat中显示的错误消息并未描述启动所有错误的异常。当较高级别的布局XML引用片段时,将onCreateView()调用该片段的。当片段的异常发生时onCreateView()(例如,在使片段的布局XML膨胀时),它将导致更高级别的布局XML的填充失败。在错误日志中,这种更高级别的充气失败被报告为异常。但是,最初的例外似乎还没有得到足够的报道。

在这种情况下,问题是当错误日志中未显示初始异常时,如何暴露该异常。

解决方案非常简单:将try/ catch块放在片段的内容周围onCreateView(),并在catch子句中记录异常:

public View onCreateView(LayoutInflater inflater, ViewGroup contnr, Bundle savedInstSt) {
    try {
        mContentView = inflater.inflate(R.layout.device_detail_frag, null);
        // ... rest of body of onCreateView() ...
    } catch (Exception e) {
        Log.e(TAG, "onCreateView", e);
        throw e;
    }
}

哪个片段类onCreateView()中执行此操作可能并不明显,在这种情况下,对导致问题的布局中使用的每个片段类执行此操作。例如,在OP的情况下,发生异常的应用代码是

at android.app.Activity.setContentView(Activity.java:1901)

这是

   setContentView(R.layout.activity_main);

因此,您需要onCreateView()在layout引用的任何片段中捕获异常activity_main

就我而言,根本原因异常是

Caused by: android.content.res.Resources$NotFoundException: Resource
   "com.example.myapp:drawable/details_view" (7f02006f)  is not a
   Drawable (color or path): TypedValue{t=0x1/d=0x7f02006f a=-1
   r=0x7f02006f}

直到我捕获onCreateView()并明确记录该异常后,该异常才会出现在错误日志中。一旦记录下来,问题就很容易诊断和解决(由于某种原因details_view.xml仅存在于ldrtl-xhdpi文件夹下)。关键是要抓住作为问题根源的异常,并将其暴露出来。

在您所有片段的onCreateView()方法中将其作为样板进行并没有什么坏处。如果其中有未捕获的异常,则无论如何它将使活动崩溃。唯一的区别是,如果您在中捕获并记录了异常onCreateView(),就不会对异常发生的原因有所了解。

PS我刚刚意识到这个答案与@DaveHubbard的答案有关,但是使用了不同的方法来找到根本原因(日志记录与调试器)。


2
您可能节省了我几个小时的调试时间。荣誉!
SzymonSadło17年

16

我遇到了同样的问题,问题,尝试了该线程中的所有答案,但无济于事。我的解决方案是,我没有在活动XML中添加ID。我认为这并不重要,但确实如此。

因此,在活动XML中,我有:

<fragment
    android:name="com.covle.hellocarson.SomeFragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

但是应该有:

<fragment
    android:id="@+id/some_fragment"
    android:name="com.covle.hellocarson.SomeFragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>

如果有人乐于对这是为什么发表评论,我对其他人都说,我希望这会有所帮助。


1
谢谢,这对我有用。我几个月以来一直在省略id,但是在布局发生突然更改之后,我开始发生崩溃。Android很奇怪。
erisco

您的回答对我有用。我只是想知道为什么我不想在任何地方都使用id属性时将其放置。你能跟我解释一下吗?
Moshii '17

12

可能您不再需要它了,但是如果更多的读者发现它有用。我完全一样android.view.InflateException:...Error inflating class fragment。我拥有所有正确的库。通过在AndroidManifest.xml文件中添加一个或多个用户权限来解决,即<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

顺便说一句我在跑步 Android Studio 0.8.9 on Ubuntu 12.04.


为我工作!非常感谢!
丹丹

12

我有同样的问题,因为我没有实现监听器。请参阅以下代码/*Add This!*/

public class SomeActivity extends AppCompatActivity
        implements BlankFragment.OnFragmentInteractionListener /*Add this!*/ 
{
    @Override                                                  /*Add This!*/
    public void onFragmentInteraction(Uri uri){                /*Add This!*/
    }                                                          /*Add This!*/
}

仅供参考,我的片段类如下所示:

public class SomeFragment extends Fragment {

    private OnFragmentInteractionListener mListener;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (OnFragmentInteractionListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    public interface OnFragmentInteractionListener {
        public void onFragmentInteraction(Uri uri);
    }
}

编辑:

当。的onCreate功能出现异常时,我也注意到同样的错误信息Fragment。我有以下内容:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);

    int ID = getArguments().getInt("val");

    return rootView;
} 

因为我重复使用了这个片段,所以我完全忘记设置参数。然后的结果getArguments()null。显然,我null在这里遇到了指针异常。我建议您也注意此类错误。


1
谢谢!这很有帮助!
DLee

8

您的NavigationDrawerFragment是否扩展了android.support.v4.app.Fragment?换句话说,您要导入正确的软件包吗?

import android.support.v4.app.Fragment;

6

我也有这个问题。我解决了它在替代进口MainActivityNavigationDrawerFragment

import android.app.Activity;
import android.app.ActionBar;

import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;

我更新MainActivity为扩展ActionBarActivity而不是活动

public class MainActivity extends ActionBarActivity implements NavigationDrawerFragment.NavigationDrawerCallbacks

也用于ActionBar actionBar = getSupportActionBar();获取ActionBar

我更新了以下功能 NavigationDrawerFragment

private ActionBar getActionBar()
{
    return ((ActionBarActivity)getActivity()).getSupportActionBar();
}

我认为这是正确的答案。但是我使用AppCompatActivity代替了ActionBarActivity(不建议弃用),并且也没有删除import android.app.ActionBar(因为onAttach方法使用了它)
GramThanos

6

我遇到了这个问题,并通过使用以下代码解决了它。我正在通过使用子碎片管理器开始碎片交易。

布局:

                  <fragment
                    class="com.google.android.youtube.player.YouTubePlayerSupportFragment"
                    android:id="@+id/youtube_fragment"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>

这就是我开始分段交易的方式:

   youTubePlayerFragment = (YouTubePlayerSupportFragment) getChildFragmentManager().findFragmentById(R.id.youtube_fragment);

以下代码说明了如何删除使用childfragmentmanger添加的片段。

@Override
    public void onDestroyView() {
        super.onDestroyView();

        youTubePlayerFragment = (YouTubePlayerSupportFragment) getChildFragmentManager().findFragmentById(R.id.youtube_fragment);

        if (youTubePlayerFragment != null)
        {
            getChildFragmentManager().beginTransaction().remove(youTubePlayerFragment).commitAllowingStateLoss();
        }

        youTubePlayer = null;
    }

TY Ali。您救了我的一天!
vm345

工作良好。谢谢!
Polyariz

4

我经常遇到类似的问题。无论实际原因如何,错误消息通常都很少提供详细信息。但是我找到了一种获取更多有用信息的方法。事实证明,内部android类'LayoutInflater.java'(位于android.view包中)具有一个'inflate'方法,该方法会重新引发异常,但不会获取详细信息,因此您将丢失原因信息。

我使用了AndroidStudio,并在LayoutInflator第539行(在我正在使用的版本中)设置了一个断点,这是该“ inflate”方法中通用异常的catch块的第一行:

        } catch (Exception e) {
            InflateException ex = new InflateException(
                    parser.getPositionDescription()
                            + ": " + e.getMessage());
            ex.initCause(e);
            throw ex;

如果在调试器中查看“ e”,则会看到“ cause”字段。它可以帮助您提示实际发生的情况。例如,这就是我发现所包含片段的父级必须具有ID的方式,即使未在您的代码中使用它。或者说TextView的尺寸有问题。


3

以防万一有人需要这个。假设:设备电话已连接到USB电缆,并且您的IDE读数已启动应用程序。转到命令提示符以确定问题:输入adb logcat

然后从IDE启动您的应用程序。您将是一个例外。

就我而言:我正在将2.3版的Android应用程序部署到不支持小部件“ Space”的移动设备上


3

当您有一个自定义类扩展了一个不同的类(在本例中为视图)并且没有导入该类所需的所有构造函数时,就会出现此问题。

例如:公共类CustomTextView扩展了TextView {}

该类有4个构造函数,如果您错过任何一个构造函数,它将崩溃。实际上,我错过了Lollipop使用的最后一个添加了该构造函数并且运行良好的函数。


2

我们还必须在build.gradle(app)中添加以下内容

compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'

每当我们使用新的布局或新的设计功能时。希望对您有帮助。


2

如前一篇文章所述,
重命名

android:name="com.fragment.NavigationDrawerFragment"

class = "com.fragment.NavigationDrawerFragment"

不过,它对我没有用。然后,我只使用了不带com.fragment部分的类名,这确实起作用了。所以最后将其更改为

class = "NavigationDrawerFragment"

2

在没有任何答案对我有帮助之后,我选择在调试模式下运行应用程序,以遍历片段中的onCreateView的每一行(在您的情况下为NavigationDrawerFragment)。并且注意到该片段由于NullPointerException而难以充气。例如

mySeekBar = (SeekBar) getActivity().findViewById(R.id.mySeekBar);
mySeekBar.setOnSeekBarChangeListener(this);

在这里,mySeekBar设置为null(因为我错过了以适当的布局添加控件的权限),并且下一行进入了NPE,即InflateException。另外,如上所述,将android:name重命名为class。

可能由于上述各种原因而出现此问题。我建议逐行调试流程以了解出了什么问题。


并且此错误是否发生在片段的onCreateView()方法中?
LarsH

1

对于仍然没有找到解决方案的一些人,在我看来,这是因为我遇到了OOM(内存不足)问题。例如,当您长时间使用应用程序时发生内存泄漏时,可能会发生这种情况。在我的堆栈跟踪中,这是主要原因。


1

我不知道这是否有帮助。

我在尝试充气的布局中遇到了TextView的问题(android.view.InflateException:二进制XML文件第45行:膨胀类TextView发生错误)。

我设置了以下XML属性android:textSize =“?android:attr / textAppearanceLarge”,该属性不允许布局夸大。

不知道确切的原因,(我对Android还是有点陌生​​-不到一年的经验)可能与调用系统属性idk有关,我所知道的只是我使用普通的@ dimen / md_text_16sp这是我的一个习惯),问题已解决:)

希望这可以帮助...


我没有片段,也没有textSize android属性。我的错误与继承自TextAppearance.AppCompat而不是的自定义样式的TextInputLayout有关Widget.Design.TextInputLayoutstackoverflow.com/questions/19874882/...
少年Mayhé

1

我在4.4.2设备上安装了该设备,但5+可以。原因:在自定义视图的初始化中,我创建了一个TextView(Context context, AttributeSet attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes)API 21+。

即使有注释,Android Studio 2.1也不会抱怨它TargetApi(21)。显然,Android Studio 2.2将纠正此错误并将其正确显示为错误。

希望这对某人有帮助。


1

我参加聚会有点晚了,但这些回答中的任何一项都对我没有帮助。我在片段中都将Google地图用作SupportMapFragmentPlaceAutocompleteFragment。正如所有答案所指出的那样,问题在于SupportMapFragment是要重新创建和重绘的地图。

但是我对PlaceAutocompleteFragment也有问题。因此,这是为那些由于SupportMapFragmentSupportMapFragment而面临此问题的人提供的有效解决方案

 mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.mapFragment);
    FragmentManager fm = getChildFragmentManager();

    if (mapFragment == null) {
        mapFragment = SupportMapFragment.newInstance();
        fm.beginTransaction().replace(R.id.mapFragment, mapFragment).commit();
        fm.executePendingTransactions();
    }

    mapFragment.getMapAsync(this);

    //Global PlaceAutocompleteFragment autocompleteFragment;


    if (autocompleteFragment == null) {
        autocompleteFragment = (PlaceAutocompleteFragment) getActivity().getFragmentManager().findFragmentById(R.id.place_autoCompleteFragment);

    }

然后在onDestroyView中清除SupportMapFragment和SupportMapFragment

@Override
public void onDestroyView() {
    super.onDestroyView();


    if (getActivity() != null) {
        Log.e("res","place dlted");
        android.app.FragmentManager fragmentManager = getActivity().getFragmentManager();
        android.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.remove(autocompleteFragment);
        fragmentTransaction.commit();

        autocompleteFragment = null;
    }


}

1

经过长时间的尝试,以上所有答案均无法解决之后,这就是我解决问题的方法。

  1. 扩展AppCompatActivity您的Main活动范围,而不是Activity
  2. 添加android:theme="@style/Theme.AppCompat.Light"到您<Activity..../>AndroidManifest.xml
  3. 在您的NavigationDrawerFragment课程中,将您的ActionBar实例更改为

    ActionBar mActionBar=((AppCompatActivity)getActivity()).getSupportActionBar();

编辑

这应该是ActivityLayout之间的一致性。如果Layout具有这样的AppCompat主题之一Theme.AppCompat.Light,您的Activity应该extends AppCompatActivity

我想拥有一个汉堡图标和一个类似于Android Gmail应用程序导航抽屉,但是最后我得到了一个难看的导航抽屉。所有这些都是因为我所有的班级都代替了。extends ActivityAppCompatActivity

我将整个项目重构为extend AppCompatActivity,然后在上单击鼠标右键Layout Folder,选择new-> Activity然后Navigation Drawer Activity是Boom,一切都为我完成!


1
android.view.InflateException: Binary XML file line #16: Error inflating class com.google.android.material.bottomappbar.BottomAppBar

视图可以是任何无法膨胀的东西,当解决XML文件中引用的视图的类名或名称属性冲突时,就会发生这种错误。

当我遇到相同的错误时,我只是将UI-XML文件中的所有内容都清理干净了,所以使用的是我所使用的视图,

   <com.google.android.material.bottomappbar.BottomAppBar
    android:id="@+id/bottomAppBar"
    style="@style/Widget.MaterialComponents.BottomAppBar.Colored"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    app:hideOnScroll="true"
    app:menu="@menu/bottom_app_bar"
    app:navigationIcon="@drawable/ic__menu_24"/>

我使用的是样式属性,它引用了“材质”组件属性。但是我的styles.xml有...

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
....
</style>

课堂解决面临冲突的地方。我的视图属性引用了我的应用主题中未定义的属性。来自材料组件的正确父主题对我有所帮助。所以我将parent属性更改为...

<style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
...
</style>

哪个解决了问题。


0

我认为基本问题是在AndroidManifest.xml中定义的“ android:targetSdkVersion”。在我的情况下,我定义为的初始值是:

android:targetSdkVersion=16

我将其更改为:

android:targetSdkVersion=22

这解决了我所有的错误。因此,在构建Android应用之前,设置正确的“ targetSdkVersion”也很重要。


0

万一有人来这里而答案不能帮助解决问题,还可以尝试另一件事。

正如其他人所提到的,这通常是由嵌套在XML本身中的问题引起的,而不是您在Java中做错的事情。就我而言,这是一个非常容易解决的错误。

我有这样的代码:

<view
    android:layout_width="fill_parent"
    android:layout_height="1dip"
    android:id="@+id/view44"
    android:background="@color/gray"
    />

我要做的就是在“视图”中将v大写,以便系统重新识别它。检查您的自定义视图(或Fragments,recyclerviews等)前面是否都具有正确的大写声明,以便XML自动完成功能会将其与适当的视图匹配。


0

我也有这个错误,经过很长时间的调试,问题似乎是我的MainClass扩展了Activity而不是FrameActivity,在我看来,xml不是问题。希望对您有所帮助。


0

就我而言。

我试图膨胀的布局

<include 
 layout  = "...."
/>

标签,将其删除即可修复。

我试图将先前为Actvity设计的布局添加到view-pager适配器中。


0

我的错误是由另一个问题引起的。

我正在将一个包从一个活动传递给它的片段。当我注释接收片段中的捆绑软件的代码时,错误消失了。事实证明,我的错误是由于以下“ getArguments();”引起的 返回null的部分。

Bundle args = getArguments();

检查了Activity发送代码后,我意识到我在下面有一个愚蠢的错误;

Bundle bundle =new Bundle();
 bundle.putInt("recipeID", recipe_position);
 Fragment mainFragment = new MainActivityFragment();
 mainFragment.setArguments(bundle);
 FragmentManager fragmentManager = getSupportFragmentManager();
 --> fragmentManager.beginTransaction()
                        .replace(R.id.container, new  MainActivityFragment(),
                                DetailRecipeActivityFragment.TAG)
                        .commit();

我正在用箭头线创建一个新片段。鉴于我应该使用已经带有捆绑包的预先实例化的片段。因此应该是:

Bundle bundle =new Bundle();
 bundle.putInt("recipeID", recipe_position);
 Fragment mainFragment = new MainActivityFragment();
 mainFragment.setArguments(bundle);
 Fragment mainFragment = new MainActivityFragment();
 FragmentManager fragmentManager = getSupportFragmentManager();
 -->fragmentManager.beginTransaction()
                        .replace(R.id.container, mainFragment,
                                DetailRecipeActivityFragment.TAG)
                        .commit();

我不知道为什么它会引发此错误而不是NPE,但这可以解决我的错误,以防有人遇到相同的情况


0

我遇到了同样的问题,以我为例,程序包名称错误,解决了该问题。



0

我在fragment.xml的根目录下有RecyclerView时遇到此错误,

但是当我用ViewGroup包装它时,该应用程序运行良好。


0

在导航中添加此名称字段

android:name =“ androidx.navigation.fragment.NavHostFragment”

   <fragment
             android:id="@+id/container"
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:name="androidx.navigation.fragment.NavHostFragment"
             app:navGraph="@navigation/navigation"
             app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
             app:layout_constraintTop_toTopOf="parent">
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.