Java 致命异常:android studio中的主要错误
我最近更新了代码并运行,只是为了查看下一秒应用程序启动和关闭时出现的错误。 以前的版本运行正常更新后我遇到问题 08-16 16:23:29.883 13995-13995/?E/AndroidRuntime:致命异常:主 流程:com.example.hemanth.anew,PID:13995 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.hemanth.anew/com.example.hemanth.anew。 家庭活动}: java.lang.NullPointerException:尝试在空对象上调用虚拟方法“java.lang.Class java.lang.Object.getClass()” 参考 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420) 在android.app.ActivityThread.access$900(ActivityThread.java:154) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:135) 位于android.app.ActivityThread.main(ActivityThread.java:5292) 位于java.lang.reflect.Method.invoke(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:904) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 导致的原因:java.lang.NullPointerException:尝试在null上调用虚拟方法“java.lang.Class java.lang.Object.getClass() 对象引用 在com.ittianyu.bottomnavigationviewex.bottomnavigationviewex.getbottomNavigationItemView(bottomnavigationviewex.java:569)上 位于com.ittianyu.bottomnavigationviewex.bottomnavigationviewex.enableAnimation(bottomnavigationviewex.java:341) 位于com.example.hemanth.anew.Utils.BottomNavigationViewHelper.setupBottomNavigationView(BottomNavigationViewHelper.java:11) 在com.example.hemanth.anew.HomeActivity.setupBottomNavigationView(HomeActivity.java:25)上 位于com.example.hemanth.anew.HomeActivity.onCreate(HomeActivity.java:19) 位于android.app.Activity.performCreate(Activity.java:5990) 位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420) 在android.app.ActivityThread.access$900(ActivityThread.java:154) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:135) 位于android.app.ActivityThread.main(ActivityThread.java:5292) 位于java.lang.reflect.Method.invoke(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:372) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:904) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699) 这是我的家庭活动代码:Java 致命异常:android studio中的主要错误,java,android,android-studio,Java,Android,Android Studio,我最近更新了代码并运行,只是为了查看下一秒应用程序启动和关闭时出现的错误。 以前的版本运行正常更新后我遇到问题 08-16 16:23:29.883 13995-13995/?E/AndroidRuntime:致命异常:主 流程:com.example.hemanth.anew,PID:13995 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.hemanth.anew/com.example.hemanth.anew。 家
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>
在
setupBottomNavigationView()
方法中有一个NullPointerException
。
似乎未检索到
bottomNavigationViewEx
。这一行似乎导致了NullPointerException
BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx);
您确定bottomNavigationViewEx
具有一些有效值吗
编辑:
好吧,我知道错误是什么了。我试过你的代码,我发现它在编译DK27之前工作得很好。你再往上走,也就是说,到现在为止是28,你会得到一个错误。这是因为图书馆的作者已经为26年前建造了图书馆。它在27上工作,因为他用于与27兼容的代码没有太多更改。但当28号出来时,它没有得到支持。作者必须更新SDK 28的库。您还剩下以下选项:
- 或者降级您的项目以使用BottomNavigationViewEx版本(代码为SDK 26,但SDK 27也可以正常工作)
- 使用除BottomNavigationViewEx以外的其他项目
- 请BottomNavigationViewEx的开发人员升级他的项目
- 将BottomNavigationViewEx导入项目并重写有问题的方法 你自己
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
}
第二步。添加依赖项
compile 'com.github.ittianyu:BottomNavigationViewEx:1.1.2'
<dependency>
<groupId>com.github.ittianyu</groupId>
<artifactId>BottomNavigationViewEx</artifactId>
<version>1.1.2</version>
</dependency>
对于Maven:
步骤13。将其添加到存储库末尾的root build.gradle中:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
步骤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,则可能需要添加以下选项:
-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类的实例。As 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);
}
行BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx)中的NullPointerException;您能告诉我们您的XML布局文件是什么样子的吗?(layout.activity\u home)我已经更新了activity\u home.xml文件,请检查是的,它会。我已经更新了BottomNavigationViewHelper.java的代码。请提供帮助。您可以在xml中发布您的xml和app:menu中指定的菜单文件吗?因为我认为错误在于菜单文件是空的。如果仔细查看,GetBottomNavigationItemView()会失败,这是一个返回按钮的函数。我已经更新了菜单文件,请随意查看。您发布了worng xml文件。请
// set adapter
adapter = new VpAdapter(getSupportFragmentManager(), fragments);
bind.vp.setAdapter(adapter);
// binding with ViewPager
bind.bnve.setupWithViewPager(bind.vp);
-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 { *; }
private void setupBottomNavigationView(){
Log.d(TAG, "setupBottomNavigationView: setting up BottomNavigationView");
BottomNavigationViewEx bottomNavigationViewEx = (BottomNavigationViewEx) findViewById(R.id.bottomNavViewBar);
BottomNavigationViewHelper helper=new BottomNavigationViewHelper();
helper.setupBottomNavigationView(bottomNavigationViewEx);
}