致命异常:android工作室中的主要错误



我最近更新了代码并运行,只是为了在应用程序下一秒启动和关闭时看到这个错误。以前的版本运行正常更新后我遇到了问题。

08-16 16:23:29.883 13995-13995/?E/AndroidRuntime:致命异常:main流程:com.example.hemath.anew,PID:13995java.lang.RuntimeException:无法启动活动组件信息{com.example.hemath.anew/com.example.hemath.anew。HomeActivity}:java.lang.NullPointerException:尝试对null对象调用虚拟方法"java.lang.Class java.lang.Object.getClass()"参考在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2358)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2420)在android.app.ActivityThread.access上$900(ActivityThreads.java:154)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1321)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5292)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:699)由以下原因引起:java.lang.NullPointerException:试图对null调用虚拟方法"java.lang.Class java.lang.Object.getClass()"对象引用网址:com.ittianyu.bottomnavigationviewex.bottomnavigationviewex.getBottomNavigationItemViews(bottomnavigationviewex.java:569)网址:com.ittianyu.bottomnavigationviewex.bottomnavigationviewex.enableAnimation(bottomnavigationviewex.java:341)网址:com.example.hemath.newe.Utils.BottomNavigationViewHelper.setupBottomNavigationView(BottomNavi导航ViewHelper.java:11)网址:com.example.hemath.newe.HomeActivity.setupBottomNavigationView(HomeActivity.java:25)网址:com.example.hemath.newe.HomeActivity.onCreate(HomeActivity.java:19)在android.app.Activity.performCreate(Activity.java:5990)在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)在android.app.ActivityThread.performLaunchActivity(ActivityThreads.java:2311)在android.app.ActivityThread.handleLaunchActivity(ActivityThreads.java:2420)在android.app.ActivityThread.access上$900(ActivityThreads.java:154)在android.app.ActivityThread$H.handleMessage(ActivityThreads.java:1321)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThreads.java:5292)位于java.lang.reflect.Method.ioke(本机方法)位于java.lang.reflect.Method.ioke(Method.java:372)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:699)

这是我的主页活动代码:

package com.example.hemanth.anew;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.example.hemanth.anew.Utils.BottomNavigationViewHelper;
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
public class HomeActivity extends AppCompatActivity {
private static final String TAG = "HomeActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Log.d(TAG, "onCreate: starting.");
setupBottomNavigationView();
}
private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting up BottomNavigationView");
BottomNavigationViewEx bottomNavigationViewEx = (BottomNavigationViewEx) findViewById(R.id.bottomNavViewBar);
BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx);
}
}

有人能帮我克服这个错误吗?检查此BottomNavigationViewHelper.java文件:

package com.example.hemanth.anew.Utils;
import android.annotation.SuppressLint;
import android.util.Log;
import com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx;
public class BottomNavigationViewHelper {
private static final String TAG = "BottomNavigationViewHel";
@SuppressLint("LongLogTag")
public static void setupBottomNavigationView(BottomNavigationViewEx 
bottomNavigationViewEx){
Log.d(TAG, "setupBottomNavigationView: setting up BottomNavigationView");
bottomNavigationViewEx.enableAnimation(false);
bottomNavigationViewEx.enableItemShiftingMode(false);
bottomNavigationViewEx.enableShiftingMode(false);
bottomNavigationViewEx.setTextVisibility(false);
}
}

这是菜单部分下的xml文件

<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true">
<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/bottomNavViewBar"
android:background="@drawable/white_grey_border_top"
app:menu="@menu/bottom_navigation_menu">

</com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx>
</RelativeLayout>

</merge>

这是activity_home.xml文件

<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".HomeActivity">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">

<!-- top toolbar -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/relLayout1">
<include layout="@layout/layout_top_tabs"/>
</RelativeLayout>
<!-- Middle section (body) -->
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relLayout2"
android:layout_below="@+id/relLayout1">
<include layout="@layout/layout_center_viewpager"/>

</RelativeLayout>

<!-- bottom navigation -->
<include layout="@layout/layout_bottom_navigation_view"/>

</RelativeLayout>

</android.support.design.widget.CoordinatorLayout>

下面是bottom_navigation_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/ic_house"
android:icon="@drawable/ic_house"
android:title="">
</item>
<item
android:id="@+id/ic_search"
android:icon="@drawable/ic_search"
android:title="">
</item>
<item
android:id="@+id/ic_circle"
android:icon="@drawable/ic_circle"
android:title="">
</item>
<item
android:id="@+id/ic_alert"
android:icon="@drawable/ic_alert"
android:title="">
</item>
<item
android:id="@+id/ic_android"
android:icon="@drawable/ic_android"
android:title="">
</item>
</menu>

感谢所有的答案,我在最新版本的android工作室中找到了一个简单的方法来解决这个问题。它是这样的:将其添加到BottomNavigationView.xml文件中

app:labelVisibilityMode="unlabeled" 

setupBottomNavigationView()方法中有一个NullPointerException。似乎未检索到bottomNavigationViewEx

这条线似乎通向NullPointerException

BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx);

你确定bottomNavigationViewEx有一些有效的值吗?

编辑:

好吧,我知道错误是什么。我试过你的代码,发现它在compileSdkVersion 27之前都能完美工作。你再往上走,也就是说,到目前为止,你已经28岁了,你会得到一个错误。这是因为图书馆的作者已经在这里建造了26张支票的图书馆。它在27上工作,因为他使用的代码与27的兼容性没有太大变化。但当28号消息传出时,却没有得到支持。作者必须为SDK 28更新他的库。您还有以下选项:

  • 将您的项目降级为使用BottomNavigationViewEx的版本(代码中的SDK 26,但SDK 27也应该可以正常工作)
  • 使用BottomNavigationViewEx以外的其他项目
  • 请BottomNavigationViewEx的开发人员升级他的项目
  • 将BottomNavigationViewEx导入项目并重写有问题的方法你自己

检查此示例:

步骤1。将其添加到您的根构建中。gradle位于存储库的末尾:

allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}

}

步骤2。添加依赖

compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.2'

对于Maven:

步骤13。将其添加到您的根构建中。gradle位于存储库的末尾:

<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>

步骤4。添加依赖

<dependency>
<groupId>com.github.ittianyu</groupId>
<artifactId>BottomNavigationViewEx</artifactId>
<version>1.1.2</version>
</dependency>

步骤5。BottomNavigationViewEx.java并将其复制到您的项目中

步骤6.在xml:中添加自定义小部件

<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
android:id="@+id/bnve"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/colorPrimary"
app:itemIconTint="@color/selector_item_color"
app:itemTextColor="@color/selector_item_color"
app:menu="@menu/menu_navigation_with_view_pager" />

步骤7.活动中的绑定视图:

BottomNavigationViewEx bnve = (BottomNavigationViewEx) findViewById(R.id.bnve);

步骤8.禁用所有动画

bnve.enableAnimation(false);
bnve.enableShiftingMode(false);
bnve.enableItemShiftingMode(false);

步骤9.与ViewPager 绑定

// set adapter
adapter = new VpAdapter(getSupportFragmentManager(), fragments);
bind.vp.setAdapter(adapter);
// binding with ViewPager
bind.bnve.setupWithViewPager(bind.vp);

步骤10.ProGuard

如果您正在使用ProGuard,您可能需要添加以下选项:

-keep public class android.support.design.widget.BottomNavigationView { *; }
-keep public class android.support.design.internal.BottomNavigationMenuView { *; }
-keep public class android.support.design.internal.BottomNavigationPresenter { *; }
-keep public class android.support.design.internal.BottomNavigationItemView { *; }

如果BottomNavigationViewHelper类不是静态的,则必须创建它的实例。作为Null指针异常从那里启动,这是因为,如果BottomNavigationViewHelper没有初始化。所以,用这个更新你的代码,看看错误会消失。

private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting up BottomNavigationView");
BottomNavigationViewEx bottomNavigationViewEx = (BottomNavigationViewEx) findViewById(R.id.bottomNavViewBar);
BottomNavigationViewHelper helper=new BottomNavigationViewHelper();
helper.setupBottomNavigationView(bottomNavigationViewEx);
}

相关内容

最新更新