Methoden Problem mit NullPointerException

SmartCode

Mitglied
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:

  1. public class BottomNavigationViewHelper {
  2. private static final String TAG = "BottomNavigationViewHel";
  3. public static void setupBottomNavigationView(BottomNavigationView bottomNavigationView){
  4. Log.d(TAG, "setupBottomNavigationView: Setting up BottomNavigationView");
  5. }
  6. public static void enableNavigation(final Context context, BottomNavigationView view){
  7. view.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
  8. @Override
  9. public boolean onNavigationItemSelected(@NonNull MenuItem item) {
  10. switch (item.getItemId()){
  11. case R.id.ic_profile:
  12. Intent intent1 = new Intent(context, ProfileActivity.class);//ACTIVITY_NUM = 0
  13. context.startActivity(intent1);
  14. break;
  15. case R.id.ic_add:
  16. Intent intent2 = new Intent(context, HelpActivity.class);//ACTIVITY_NUM = 1
  17. context.startActivity(intent2);
  18. break;
  19. case R.id.ic_jobs:
  20. Intent intent3 = new Intent(context, JobsActivity.class);//ACTIVITY_NUM = 2
  21. context.startActivity(intent3);
  22. break;
  23. }
  24. return false;
  25. }
  26. });
  27. }
  28. }


HelpActivity.Java:

  1. public class HelpActivity extends AppCompatActivity {
  2. private static final String TAG = "HelpActivity";
  3. private static final int ACTIVITY_NUM = 0;
  4. private Context mContext = HelpActivity.this;
  5. @Override
  6. protected void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.activity_help);
  9. Log.d(TAG, "onCreate: starting.");
  10. setupBottomNavigationView();
  11. }
  12. /**
  13. * BottomNavigationView setup
  14. */
  15. private void setupBottomNavigationView(){
  16. Log.d(TAG, "setupBottomNavigationView: setting up BottomNavigationView");
  17. BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottomNavViewBar);
  18. BottomNavigationViewHelper.setupBottomNavigationView(bottomNavigationView);
  19. BottomNavigationViewHelper.enableNavigation(mContext, bottomNavigationView);
  20. Menu menu = bottomNavigationView.getMenu();
  21. MenuItem menuItem = menu.getItem(ACTIVITY_NUM);
  22. menuItem.setChecked(true);
  23. }
  24. }


Logcat:
  1. 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
  2. at com.smarthelp.smarthelp.Utils.BottomNavigationViewHelper.enableNavigation(BottomNavigationViewHelper.java:30)
  3. at com.smarthelp.smarthelp.HelpActivity.setupBottomNavigationView(HelpActivity.java:37)
  4. at com.smarthelp.smarthelp.HelpActivity.onCreate(HelpActivity.java:27)
  5. at android.app.Activity.performCreate(Activity.java:7136)
  6. at android.app.Activity.performCreate(Activity.java:7127)
  7. at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
  8. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
  9. at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
  10. at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
  11. at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
  12. at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
  13. at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
  14. at android.os.Handler.dispatchMessage(Handler.java:106)
  15. at android.os.Looper.loop(Looper.java:193)
  16. at android.app.ActivityThread.main(ActivityThread.java:6669)
  17. at java.lang.reflect.Method.invoke(Native Method)
  18. at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
  19. at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
  20. 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
 
Attempt to invoke virtual method 'void android.support.design.widget.BottomNavigationView.setOnNavigationItemSelectedListener(android.support.design.widget.BottomNavigationView$OnNavigationItemSelectedListener)' on a null object reference
Du versuchst die Methode setOnNavigationItemSelectListener des Typs BottomNavigationView aufzurufen, die verwendete Referenz ist jedoch null. Das passiert an folgender Stelle:
at com.smarthelp.smarthelp.Utils.BottomNavigationViewHelper.enableNavigation(BottomNavigationViewHelper.java:30)
Schau mal dort nach.
 
Naja, verfolge doch einfach die Ursache der NPE.
Der Empfänger der Methode setOnNavigationItemSelectedListener() ist null, also gucken, wo der herkommt. Aha, von dem zweiten Parameter `BottomNavigationView view`. Und wo wird dieser zweite Parameter als Argument angegeben? Aha als Variable `bottomNavigationView`. Und wo kommt die her? Aha, von `findViewById(R.id.bottomNavViewBar);`. Folglich: Die Komponente mit dieser id existiert nicht.
 
Naja, verfolge doch einfach die Ursache der NPE.
Der Empfänger der Methode setOnNavigationItemSelectedListener() ist null, also gucken, wo der herkommt. Aha, von dem zweiten Parameter `BottomNavigationView view`. Und wo wird dieser zweite Parameter als Argument angegeben? Aha als Variable `bottomNavigationView`. Und wo kommt die her? Aha, von `findViewById(R.id.bottomNavViewBar);`. Folglich: Die Komponente mit dieser id existiert nicht.

Spielverderber 🙂
 
Naja, verfolge doch einfach die Ursache der NPE.
Der Empfänger der Methode setOnNavigationItemSelectedListener() ist null, also gucken, wo der herkommt. Aha, von dem zweiten Parameter `BottomNavigationView view`. Und wo wird dieser zweite Parameter als Argument angegeben? Aha als Variable `bottomNavigationView`. Und wo kommt die her? Aha, von `findViewById(R.id.bottomNavViewBar);`. Folglich: Die Komponente mit dieser id existiert nicht.

Okay, danke für die ausführliche Antwort 🙂 Nur stellt sich mir nun als absoluter Anfänger die Frage, wo setze ich die fehlende Komponente ein?
Versteht mich nicht falsch, ich bin grade dabei die basics zu lernen, aber experimentiere aus Spaß auch mit etwas (für mich) komplizierteren Methoden rum, nur um zu sehen was man so alles machen kann und da ist es schon ganz schön schwer da hinterher zu kommen 😀 das der Fehler von
  1. view.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
ausging war mir klar, nur verzweifele ich daran, diesen zu fixen, einfach weil ich mit den Basics noch nicht so weit bin... Wenn mir vielleicht jemand sagen könnte was zu editieren ist, hab ich daraus schon für den nächsten NPE gelernt.

Grüße
 
Zuletzt bearbeitet:
einfach weil ich mit den Basics noch nicht so weit bin
Ehrlicherweise solltest du dann vielleicht einen Schritt zurückgehen und nicht gerade mit der Android-Programmierung anfangen.

wo setze ich die fehlende Komponente ein?
Du musst in deinem Layout-File activity_help.xml eine Komponente deklarieren die die von dir angegebene ID bottomNavViewBar besitzt. Vielleicht hier noch mal ein genereller Link wie man BottomNavigationViews in Android benutzt.
 
Ehrlicherweise solltest du dann vielleicht einen Schritt zurückgehen und nicht gerade mit der Android-Programmierung anfangen.

Ich mach das eigentlich nur aus Spaß, und lerne wie gesagt auch simultan die Basics, aber es ist auch interessant auch einfach mal ein wenig herum zu experimentieren, vorausgesetzt man hängt sich gedanklich nicht komplett auf so wie ich ... Im Prinzip gehts mir wie der App
 
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..!

Danke für die Hilfe,!!!!
 

Neue Themen


Zurück
Oben