Problem mit NullPointerException

  • Antworten:5
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 3

16.08.2018, 14:10:10 via Website

Servus,
ich bin kürzlich in die Welt des App Programmierens eingestiegen und dementsprechend noch ein ziemlicher Laie, also nehmt es mir nicht allzu übel wenn meine Frage vielleicht ein bisschen simpel erscheint.

Ich lerne grade noch die Basics, aber damit es auch spannend bleibt, wage ich mich auch schon einige für einen Anfänger kompliziertere Aufgaben heran, gemäß dem Motto "learning by doing".

Ich nutze Android Studio als Entwicklungsumgebung.
Die App läuft auch soweit, jedoch habe ich heute eine Navigationsleiste im unteren Bildschirmbereich implementiert und wollte diese mit den einzelnen Aktivitäten verknüpfen, wenn ich jetzt jedoch die App ausführe und ein Icon anklicke, stürzt es umgehend ab.
Im Logcat lässt sich ablesen, dass es sich um einen NullPointerExeption Fehler handelt, warum dieser generell entsteht ist mir bewusst, jedoch habe ich leider keine Ahnung was ich nun ändern muss um diesen zu beheben. Es wäre sehr hilfreich für mich, wenn sich jemand erbarmen würde und mir sagt, wie der Fehler zu beheben ist.

BottomNavigationViewHelper.Java:

public class BottomNavigationViewHelper {

    private static final String TAG = "BottomNavigationViewHel";

    public static void setupBottomNavigationView(BottomNavigationView bottomNavigationView){
        Log.d(TAG, "setupBottomNavigationView: Setting up BottomNavigationView");

    }

    public static void enableNavigation(final Context context, BottomNavigationView view){
        view.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){

                    case R.id.ic_profile:
                        Intent intent1 = new Intent(context, ProfileActivity.class);//ACTIVITY_NUM = 0
                        context.startActivity(intent1);
                        break;

                    case R.id.ic_add:
                        Intent intent2  = new Intent(context, HelpActivity.class);//ACTIVITY_NUM = 1
                        context.startActivity(intent2);
                        break;

                    case R.id.ic_jobs:
                        Intent intent3 = new Intent(context, JobsActivity.class);//ACTIVITY_NUM = 2
                        context.startActivity(intent3);
                        break;

                }


                return false;
            }
        });
    }
}

HelpActivity.Java:

public class HelpActivity extends AppCompatActivity {

    private static final String TAG = "HelpActivity";
    private static final int ACTIVITY_NUM = 0;

    private Context mContext = HelpActivity.this;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_help);
        Log.d(TAG, "onCreate: starting.");

        setupBottomNavigationView();
    }

    /**
     * BottomNavigationView setup
     */
    private void setupBottomNavigationView(){
        Log.d(TAG, "setupBottomNavigationView: setting up BottomNavigationView");
        BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavViewBar);
        BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationView);
        BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationView);
        Menu menu = bottomNavigationView.getMenu();
        MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
        menuItem.setChecked(true);
    }
}

Logcat:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.BottomNavigationView.setOnNavigationItemSelectedListener(android.support.design.widget.BottomNavigationView$OnNavigationItemSelectedListener)' on a null object reference
at com.smarthelp.smarthelp.Utils.BottomNavigationViewHelper.enableNavigation(BottomNavigationViewHelper.java:30)
at com.smarthelp.smarthelp.HelpActivity.setupBottomNavigationView(HelpActivity.java:37)
at com.smarthelp.smarthelp.HelpActivity.onCreate(HelpActivity.java:27)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:193) 
at android.app.ActivityThread.main(ActivityThread.java:6669) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 
08-16 00:58:25.580 6992-6992/com.smarthelp.smarthelp I/Process: Sending signal. PID: 6992 SIG: 9

Ich versuche schon seit stunden das Problem zu lösen, leider nicht grade von Erfolg gekrönt...

Danke im voraus für jede hilfreiche Antwort

Grüße "Smart"Code

Diskutiere mit!
Beste Antwort
  • Forum-Beiträge: 488

16.08.2018, 15:53:10 via Website

Pascal fragt ob du das Widget BottomNavigationView im xml Code deines Layout überhaupt hast.
Am besten du zeigst mal dein Layout.

Wenn du das nicht hast kann die id mit findViewById nicht gefunden werden und wenn du das dann an deine Klasse übergibst
Kann da auch kein listner erstellt werden.

PS lasse dir doch dir variable indeinem log ausgeben wozu hast du denn sonst die Methode erstellt.

— geändert am 16.08.2018, 15:58:38

Hilfreich?
Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.183

16.08.2018, 14:18:36 via App

Hallo SmartCode,

Herzlich willkommen hier im Forum :)

Bist du sicher, dass auf dem Layout der HelpActivity die BottomNavViewBar enthalten ist? Sieht so aus s wäre diese Null also wird auf dem Layout unter der angegebenen ID nicht gefunden.

— geändert am 16.08.2018, 14:18:44

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 488

16.08.2018, 15:16:02 via Website

Hi
Frage wo erstellst du deine Instanz für die Klasse "BottomNavigationViewHelper"

Ok ich habe gerade gesehen das die Methoden static sind.
Ich würde das nicht static machen ist kein guter Prorgrammierstiel.
Die Methoden sind durchgehend im Speicher auch wenn du eine andere Activity startest. das muss nicht sein.

— geändert am 16.08.2018, 15:31:13

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 3

16.08.2018, 15:34:38 via Website

Danke für die Antwort, das die Methode 0 ist war mir schon klar, nur komme ich mit meinem Laien Wissen nicht mehr mit, wie ich den Fehler fixe, bzw welche Komponente genau fehlt und wo diese einzusetzen ist.
Ich bin das ganze schon X mal durchgegangen und hab anscheinend langsam eine mehr oder weniger große Hirnblockade :D

Hilfreich?
Diskutiere mit!
Beste Antwort
  • Forum-Beiträge: 488

16.08.2018, 15:53:10 via Website

Pascal fragt ob du das Widget BottomNavigationView im xml Code deines Layout überhaupt hast.
Am besten du zeigst mal dein Layout.

Wenn du das nicht hast kann die id mit findViewById nicht gefunden werden und wenn du das dann an deine Klasse übergibst
Kann da auch kein listner erstellt werden.

PS lasse dir doch dir variable indeinem log ausgeben wozu hast du denn sonst die Methode erstellt.

— geändert am 16.08.2018, 15:58:38

Hilfreich?
Diskutiere mit!
  • Forum-Beiträge: 3

16.08.2018, 15:56:50 via Website

OMG, alles was man nach 00:00 macht ist Müll, aus irgend einem Grund waren bis auf eine Aktivität, die xml.files der anderen Aktivitäten leer, merkwürdig aber ich war mir zu 1000% sicher das da alles gestimmt hat und das ich das überprüft hätte, läuft jetzt alles..!

Schade das man nur eine Antwort als beste Auszeichnen kann, auch ein danke an Pascal er hatte es ja eigentlich schon geschrieben :)

Danke für die Hilfe,!!!!

— geändert am 16.08.2018, 16:01:17

Hilfreich?
Diskutiere mit!

Empfohlene Artikel