膨胀类android.support.design.internal.BottomNavigationView时出错 [英] Error inflating class android.support.design.internal.BottomNavigationView

查看:77
本文介绍了膨胀类android.support.design.internal.BottomNavigationView时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在制作我的第一个应用程序。
这是一个具有启动画面和主要活动的简单应用程序,现在具有味道,我有两个构建变体:

i'm making my first app. it is a simple application with a splash screen and the main activity and now with flavours i have two build variants:

免费版本: :活动底部带有Admob横幅

Free Version: With Admob banner on bottom of the activity

付费版本: 应用程序不会在底部显示admob横幅,而是将其替换为用于开关活动的底部导航视图(我将为此添加另一个活动)。

Paid Version: The app don't show admob banner on the bottom but replace it with a Bottom Navigation View for switch activity ( i will add another activity for this).

我告诉您,在我添加此底部导航之前,请查看应用程序的所有部分是否正常工作,包括构建变体。

这就是我为添加Botttom导航菜单所做的:

This is what i did for add Botttom Navigation Menu:

首先,我将底部导航视图放在xml活动文件的底部:

First i put the Bottom Navigation View on the bottom of the xml activity file:

valutausato.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_marginTop="50dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_margin="8dp"
    android:layout_centerHorizontal="true">

    <TextView
        android:id="@+id/TitoloText"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="VALUTA IL TUO USATO"
        android:textSize="32dp"
        android:textAlignment="center"
        android:textColor="@color/colorPrimaryDark"
        android:fontFamily="sans-serif-condensed"
        android:layout_weight="1"
        android:textStyle="bold" />

</LinearLayout>

<LinearLayout
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:layout_marginTop="70dp"
    android:layout_marginHorizontal="40dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="Prezzo In Negozio:"
        android:fontFamily="sans-serif"
        android:textStyle="bold|italic"
        android:textColor="#111"
        android:textSize="22dp"/>

</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="100dp"
    android:layout_centerHorizontal="true">

    <EditText
        android:id="@+id/ProdottoNuovoTxt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginHorizontal="2dp"
        android:layout_weight="1"
        android:inputType="numberDecimal"
        android:digits="0123456789."
        android:maxLength="30"
        android:text="Inserisci qui il prezzo.."
        android:textSize="22dp"
        android:fontFamily="sans-serif-condensed"
        android:textColor="@color/colorPrimary"/>

</LinearLayout>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="160dp">
    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="In Garanzia"
        android:layout_marginRight="0dp"
        android:textSize="17dp" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="200dp">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Condizioni prodotto"
        android:fontFamily="sans-serif"
        android:textColor="#111"
        android:textStyle="bold|italic"
        android:textSize="22dp"/>
</LinearLayout>

<LinearLayout
    android:layout_marginTop="250dp"
    android:layout_centerHorizontal="true"
    android:layout_marginHorizontal="40dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="true"
    android:focusableInTouchMode="true">
    <Spinner
        android:id="@+id/ProdottoDanneggiatospn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginRight="0dp"
        android:textColor="@color/colorPrimary"
        android:layout_weight="1"/>

</LinearLayout>
<LinearLayout

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="290dp">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Accessori"
        android:layout_weight="1"
        android:fontFamily="sans-serif"
        android:textStyle="bold|italic"
        android:textColor="#111"
        android:textSize="22dp"/>

</LinearLayout>

<LinearLayout
    android:layout_marginTop="340dp"
    android:layout_centerHorizontal="true"
    android:layout_marginHorizontal="40dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <Spinner
        android:id="@+id/PartiMancantispn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginRight="0dp"
        android:textColor="@color/colorPrimary"
        android:layout_weight="1"/>

</LinearLayout>

<LinearLayout
    android:layout_marginTop="400dp"
    android:layout_centerHorizontal="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <Button
        android:id="@+id/BtnCalcola"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Calcola"
        android:background="@color/ColorButton"
        android:layout_weight="1"
        android:fontFamily="sans-serif-smallcaps"
        android:textStyle="bold|italic"
        android:textSize="17dp"/>

</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="470dp"
    android:layout_weight="1">

    <TextView
        android:id="@+id/FormPrezzoFinale"
        android:textSize="22dp"
        android:fontFamily="sans-serif-condensed"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#002F80"
        android:layout_weight="1"
        android:text="prova"/>

</LinearLayout>

<android.support.design.internal.BottomNavigationView
    android:id="@+id/MenuBottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:itemBackground="@color/colorPrimary"
    app:itemIconTint="@drawable/background_menu_color"
    app:itemTextColor="@drawable/background_menu_color"
    app:menu="@menu/background_menu_main"/>

<com.google.android.gms.ads.AdView
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    android:id="@+id/SmartBanner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_marginTop="60dp"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111">
</com.google.android.gms.ads.AdView>

</RelativeLayout>

在此之后,我以正确的依赖关系设置了我的app.build.gradle文件

After this i setup my app.build.gradle file with correct dependencies

app.build.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 26
defaultConfig {
    applicationId "com.viniusapp.value"
    minSdkVersion 15
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

flavorDimensions "version"

productFlavors {
    freeVersion {

        dimension "version"
        applicationId "com.viniusapp.value.lite"
        versionName = "1.0-lite"           
    }

    paidVersion {

        dimension "version"        
        applicationId "com.viniusapp.value.premium"
        versionName = "1.0-premium"                    
       }
   }
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
compile 'com.google.android.gms:play-services-ads:11.8.0'
compile 'com.android.support:design:26.1.0'
}

后来我在drawable文件夹中创建了底部导航视图的文件

Later i create in the drawable folder the file for the bottom navigation view

background_menu_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:color="@color/colorPrimaryDark"       android:state_enabled="true"/>

    <item android:color="@color/colorPrimary" android:state_enabled="true"/>

</selector>

最后,我在主res文件夹中创建菜单文件夹,并为菜单项创建xml文件并为此两个动作创建两个图像资产。

And finally i create "menu"folder in the main res folder and create the xml file for menu item and create two image assets for this two actions.

background_menu_main.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
    android:id="@+id/Action_Value"
    android:enabled="true"
    android:icon="@drawable/ic_value"
    android:title="Valuta"
    app:showAsAction="ifRoom"
    />
<item
    android:id="@+id/Action_Search"
    android:enabled="true"
    android:icon="@drawable/ic_search"
    android:title="Cerca Sul Web"
    app:showAsAction="ifRoom"
    />

</menu>

我做的最后一件事是在Java文件中添加BottomNavigation视图(我删除了所有其余代码

The last thing i did is add BottomNavigation view in java file (I remove all the rest of the code that was useless for this problem)

package com.vkapp.valutatoreusato;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.internal.BottomNavigationMenuView;
import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher;
import android.text.method.DigitsKeyListener;
import android.util.Log;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import junit.runner.Version;
import java.lang.reflect.Type;



public class ValutaUsato extends Activity {

int Iva = 22;                                  
double PriceProductNew;                    
double SalePriceOfProduct = 0;               
boolean FirstLaunch = true;                         
int NumeroUtilizziTotali = 0;
Button BtnCalcola = null;                          
EditText PriceProductNewTxt = null;                  
TextView SalePriceText = null;                      
Spinner DamageProductState = null;                 
Spinner MissPartProductState = null;                
InterstitialAd mInterstitialAd;
AdView SmartBanner;
BottomNavigationMenuView BottomNavigationMenuMoveForMove = null;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {              

    BtnCalcola = (Button) findViewById(R.id.BtnCalcola);          
    BtnCalcola.setEnabled(false);                                 
    PriceProductNewTxt = (EditText) findViewById(R.id.ProdottoNuovoTxt);    
    SalePriceText = (TextView) findViewById(R.id.FormPrezzoFinale);         
    DamageProductState = (Spinner) findViewById(R.id.ProdottoDanneggiatospn);  
    MissPartProductState = (Spinner) findViewById(R.id.PartiMancantispn);   
    BottomNavigationMenuMoveForMove = (BottomNavigationMenuView) findViewById(R.id.MenuBottom);
    BottomNavigationMenuMoveForMove.setEnabled(false);

    super.onCreate(savedInstanceState);

    setContentView(R.layout.valutausato);                         


    if (BuildConfig.FLAVOR.equals("freeVersion")) {

        Log.d("TAG", "Free Version running");
        Log.d("TAG", BuildConfig.APPLICATION_ID);
        Log.d("TAG", BuildConfig.VERSION_NAME);
        MobileAds.initialize(this, "ca-app-pub-3526806334939799/1381568933");

        SmartBanner = findViewById(R.id.SmartBanner);
        AdRequest adRequest = new AdRequest.Builder().build();
        SmartBanner.loadAd(adRequest);

        mInterstitialAd = new InterstitialAd(this);
        mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
        mInterstitialAd.loadAd(new AdRequest.Builder().build());
        ;
    }

    if (BuildConfig.FLAVOR.equals("paidVersion")) {

        Log.d("TAG", "Paid Version running");
        BottomNavigationMenuMoveForMove.setEnabled(true);
        Log.d("TAG", BuildConfig.APPLICATION_ID);
        Log.d("TAG", BuildConfig.VERSION_NAME);

       }
   }
 }

之后我的项目如下:

项目结构

预览主要活动

但是现在当我调试/运行应用程序时,初始屏幕运行良好,但是当主要活动启动该应用程序时,出现以下错误:

But now when i deubg/run the app the splash screen work good but when the main activity start the app crash with this errors:

01-11 18:07:54.000 7279-7279/com.viniusapp.value.lite E/AndroidRuntime: FATAL EXCEPTION: main
                                                                    Process: com.viniusapp.value.lite, PID: 7279
                                                                    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.viniusapp.value.lite/com.vkapp.valutatoreusato.ValutaUsato}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class android.support.design.internal.BottomNavigationView
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
                                                                        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
                                                                        at android.app.ActivityThread.-wrap11(Unknown Source:0)
                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:106)
                                                                        at android.os.Looper.loop(Looper.java:164)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:6494)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
                                                                     Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class android.support.design.internal.BottomNavigationView
                                                                     Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class android.support.design.internal.BottomNavigationView
                                                                     Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.design.internal.BottomNavigationView" on path: DexPathList[[zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/base.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_dependencies_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_0_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_1_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_2_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_3_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_4_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_5_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_6_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_7_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_8_apk.apk", zip file "/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.viniusapp.value.lite-yk6VQ4PuiYd-h1puOhz6iA==/lib/x86, /system/lib, /vendor/lib]]
                                                                        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                        at android.view.LayoutInflater.createView(LayoutInflater.java:606)
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
                                                                        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
                                                                        at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
                                                                        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                        at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                        at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:419)
                                                                        at android.app.Activity.setContentView(Activity.java:2669)
                                                                        at com.vkapp.valutatoreusato.ValutaUsato.onCreate(ValutaUsato.java:66)
                                                                        at android.app.Activity.performCreate(Activity.java:6999)
                                                                        at android.app.Activity.performCreate(Activity.java:6990)
                                                                        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
                                                                        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)

我看到此错误

at com.vkapp.valutatoreusato.ValutaUsato.onCreate(ValutaUsato.java:66)

链接此语句

BottomNavigationMenuMoveForMove = (BottomNavigationMenuView) findViewById(R.id.MenuBottom);

我希望一切对您都清楚。

I hope this is all clear for you.

感谢您的帮助

推荐答案

您在xml代码中使用了错误的类。应该是:

You are using wrong class in your xml code. It should be:

<android.support.design.widget.BottomNavigationView

而不是

<android.support.design.internal.BottomNavigationView

差异在于关键字:内部 widget

Difference is in keywords: internal and widget.

活动内的下一个 BottomNavigationMenuView 更改为 BottomNavigationView 。还要确保

Next inside your Activity change BottomNavigationMenuView to BottomNavigationView. Also make sure that

 super.onCreate(savedInstanceState);
 setContentView(R.layout.valutausato)

代码位于<$ c $的顶部c> onCreate 无需与ID连接。

code is on top of onCreate not after connecting with IDs.

这篇关于膨胀类android.support.design.internal.BottomNavigationView时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆