簡體   English   中英

致命異常:android studio 中的主要錯誤

[英]FATAL EXCEPTION: main error in 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。 HomeActivity}:java.lang.NullPointerException:嘗試在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358) 的空對象引用上調用虛擬方法“java.lang.Class java.lang.Object.getClass()”在 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(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) at com.android。 internal.os.ZygoteInit.main(ZygoteInit.java:699) 引起:java.lang.NullPointerException:嘗試在空對象引用上調用虛方法“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.hemanth.anew.Utils.Navigation BottomNavigationViewHelper.java:11) at com.example.hemanth.anew.HomeActivity.setupBottomNavigationView(HomeActivity.java:25) at com.example.hemanth.anew.HomeActivity.onCreate(HomeActivity.java:19) at 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(Handle) r.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5292) 在 java.lang.reflect.Method.invoke(Native Method)在 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)

這是我的家庭活動代碼:

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 studio 中找到了一種簡單的方法來解決這個問題。 它是這樣的:將它添加到BotttomNavigationView.xml文件

app:labelVisibilityMode="unlabeled" 

setupBottomNavigationView()方法中有一個NullPointerException 似乎沒有檢索到bottomNavigationViewEx

似乎這條線導致NullPointerException

BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationViewEx);

您確定bottomNavigationViewEx具有某些有效值嗎?

編輯 :

好的,我知道錯誤是什么。 我嘗試了你的代碼,我發現它在 compileSdkVersion 27 之前都可以完美運行。你再往上走,即現在 28,你會得到一個錯誤。 這是因為該庫的作者已經為 26- check構建了該庫。 它適用於 27,因為他用於與 27 兼容的代碼沒有太大變化。但是當 28 出來時,它不受支持。 作者必須為 SDK 28 更新他的庫。您還有以下選項:

  • 要么降級您​​的項目以使用 BottomNavigationViewEx 的版本(代碼為 SDK 26,但 SDK 27 也應該可以正常工作)
  • 使用 BottomNavigationViewEx 以外的其他項目
  • 要求BottomNavigationViewEx的開發者升級他的項目
  • 將 BottomNavigationViewEx 導入您的項目並自己重寫有問題的方法

檢查這個例子:

步驟 1. 將它添加到存儲庫末尾的根 build.gradle 中:

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

}

步驟 2. 添加依賴項

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

對於 Maven:

步驟 13. 將它添加到存儲庫末尾的根 build.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 . Activity 中的綁定視圖:

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

步驟 8 .禁用所有動畫

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

第 9 步 .Binding 與 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 類的實例。 由於空指針異常從那里啟動,這是因為如果未初始化 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);

      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM