【问题标题】:Error when inflating Bottom Navigation View膨胀底部导航视图时出错
【发布时间】:2018-11-06 17:34:03
【问题描述】:

在我的 API 27 手机上运行良好,但在 API22 中崩溃

这是 xml 文件

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ReportsActivity">

<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:background="@color/bgBottomNavigation"
    app:itemBackground="@color/bgBottomNavigation"
    android:foreground="?attr/selectableItemBackground"
    app:itemIconTint="@color/nav_color"
    app:itemTextColor="@color/nav_color"
    app:menu="@menu/navigation" />

这是 MainActivity 文件

CoordinatorLayout 容器;

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

    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
    requestPermission();


    loadFragment(new BranchVisitFragment());
}

@Override
public void onFragmentInteraction(Uri uri) {

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu, menu);
    return true;


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    switch (item.getItemId()) {
        case R.id.menuLogout:

            FirebaseAuth.getInstance().signOut();
            finish();
            startActivity(new Intent(this, LoginActivity.class));

            break;

        case R.id.refresh:

            Fragment f = getSupportFragmentManager().findFragmentById(R.id.frame_container);
            if( f instanceof BranchVisitFragment)
                BranchVisitFragment.refresh();
            if(f instanceof GroupFragment)
                GroupFragment.refresh();
            break;

        case R.id.excel:

            Toast.makeText(this,"Creating the Excel Sheet...",Toast.LENGTH_LONG).show();
            CreateExcel.createExcel();
            break;

我觉得错误是由于这个文件,但我不知道如何让这两个东西在 API22 中正常工作

这里是 nav_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#039BE5" />
    <item android:color="#616161"  />
</selector>

我已经在 stackoverflow 中寻找可能的解决方案,但我找不到一个

这是 gradle 文件

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:support-v4:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.itextpdf:itextg:5.5.10'
implementation 'com.android.support:design:28.0.0'

这是错误:

Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class android.support.design.widget.BottomNavigationView
    at android.view.LayoutInflater.createView(LayoutInflater.java:637)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:747)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:810)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:508)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:418)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
    at com.example.aditya.pdf_report.ReportsActivity.onCreate(ReportsActivity.java:59)
    at android.app.Activity.performCreate(Activity.java:6093)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2404) 
    at android.app.ActivityThread.access$900(ActivityThread.java:154) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1315) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5296) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
    at android.view.LayoutInflater.createView(LayoutInflater.java:611)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:747) 
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:810) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:508) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:418) 
    at android.view.LayoutInflater.inflate(LayoutInflater.java:365) 
    at android.support.v7.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
    at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
    at com.example.aditya.pdf_report.ReportsActivity.onCreate(ReportsActivity.java:59) 
    at android.app.Activity.performCreate(Activity.java:6093) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2404) 
    at android.app.ActivityThread.access$900(ActivityThread.java:154) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1315) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5296) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707) 
 Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f070087
    at android.content.res.Resources.getValue(Resources.java:1313)
    at android.content.res.MiuiResources.getValue(MiuiResources.java:146)
    at android.support.v7.content.res.AppCompatResources.isColorInt(AppCompatResources.java:163)
    at android.support.v7.content.res.AppCompatResources.inflateColorStateList(AppCompatResources.java:110)
    at android.support.v7.content.res.AppCompatResources.getColorStateList(AppCompatResources.java:76)
    at android.support.v7.widget.TintTypedArray.getColorStateList(TintTypedArray.java:171)
    at android.support.design.widget.BottomNavigationView.<init>(BottomNavigationView.java:148)
    at android.support.design.widget.BottomNavigationView.<init>(BottomNavigationView.java:114)

XML 中的第 16 行

<android.support.design.widget.BottomNavigationView

活动中的第 59 行

setContentView(R.layout.activity_reports);

colors.xml

    <?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#1F618D</color>
    <color name="colorPrimaryDark">#000</color>
    <color name="colorAccent">#D81B60</color>
    <color name="bgBottomNavigation">#fff</color>
    <color name="activated">#039BE5</color>
    <color name="notactive">#616161</color>

</resources>

menu.xml

<?xml version="1.0" encoding="utf-8"?>

<item
    android:id="@+id/menuLogout"
    android:title="Logout" />

<item
    android:title=""
    android:id="@+id/refresh"
    android:icon="@drawable/ref"
    app:showAsAction="always"/>

<item
    android:id="@+id/excel"
    android:title="Create Excel"
    app:showAsAction="never"/>

【问题讨论】:

  • 什么是错误??
  • @PankajKumar 我已经更新了错误
  • 你试过在没有nav_color.xml文件的情况下在api 22上运行代码吗?
  • @victorldavila 是的,在我添加之前它工作得很好
  • 我认为你的错误是@color/nav_color你必须在drawable文件夹中添加文件nav_color.xml,然后在你遇到问题的这些字段中添加@drawable/nav_color

标签: android android-studio bottomnavigationview


【解决方案1】:

经过12个小时的严谨思考和思考,我终于找到了解决方案。

我的代码绝对没有问题。

它在可绘制文件夹中。

我将 2 个图标 PNG 放在 v24 可绘制文件夹中,结果它不适用于我检查的 API23 和 API22。

因此,只需将它们放回 Drawable 文件夹,它就可以发挥作用。

感谢大家的帮助。

【讨论】:

  • @MohammedsalimShivani 当然。实际上,Stack Overflow 允许在回答 36 小时后接受自我回答。
  • 赞成。我继承了这个,我花了几个小时才弄清楚 - 感谢这篇文章。
【解决方案2】:

我有同样的问题,并通过从底部导航视图 xml 中删除样式属性来解决。

style="@style/Widget.MaterialComponents.BottomNavigationView"

【讨论】:

    【解决方案3】:

    【讨论】:

    • 它确实出现在链接中,但就在昨天,当我没有添加 nav_color.xml 文件时,它工作得很好。所以这肯定不是答案
    • 附上。到这个链接它支持直到 API 14 stackoverflow.com/a/51464819/10485139
    • 我没有看到他们在这些链接中看到 14 的位置。
    • 您的链接是关于com.google.android.material.bottomnavigation.BottomNavigationView。这是错误的
    【解决方案4】:

    我刚刚更改了底部导航 gradle 实现中的版本,并再次在 xml 文件中手动添加导航栏并分配了所有属性。成功了

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 1970-01-01
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多