2017-03-23 2 views
0

Ich brauche Hilfe. Ich bin in der Zielphase der Entwicklung meiner Android-Anwendung und jetzt nach ein paar Monaten von der App auf magische Weise mit diesem Fehler entwickeln Absturz:App Absturz mit android.content.Context.getPackageName() 'auf eine Null-Objekt Referenz

java.lang.String android.content.Context.getPackageName()' on a null object reference 

Ich weiß nicht, was das Problem ist, aber ich werde schreiben der Code, der den Absturz verursachen:

public static void start(Context context) { 
     context.startActivity(new Intent(context, ConversationsActivity.class)); 
    } 

genannt mit diesem Stück Code (in einem Fragmente):

ConversationsActivity.start(getActivity()); 

die letzte Änderung, die ich machen habe, war hinzufügen Fab ric.io (insbesondere Branch) und aus der Geschichte in der letzten auf git commit ich nichts nicht zeigen, die diesen Fehler erzeugen kann

EDIT:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
at android.content.ComponentName.<init>(ComponentName.java:128) 
at android.content.Intent.<init>(Intent.java:4900) 
at com.exampleapp.views.messages.ConversationsActivity.start(ConversationsActivity.java:31) 
at com.exampleapp.views.menu.MenuFragment.onMenuMessagesClicked(MenuFragment.java:116) 
at com.exampleapp.views.menu.MenuFragment_ViewBinding$5.doClick(MenuFragment_ViewBinding.java:82) 
at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22) 
at android.view.View.performClick(View.java:5637) 
at android.view.View$PerformClick.run(View.java:22429) 
at android.os.Handler.handleCallback(Handler.java:751) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:154) 
at android.app.ActivityThread.main(ActivityThread.java:6119) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+0

Bitte bearbeiten Sie Ihre Frage und veröffentlichen Sie den gesamten Java-Stack-Trace. – CommonsWare

+0

Ich habe die Frage aktualisiert – Ne0

+0

'getActivity()' scheint zurück zu geben 'null'. Ich bin mir nicht ganz sicher warum. – CommonsWare

Antwort

0

Ihr Problem ist, dass Sie die Absicht falsch verwenden. Ersetzen Sie Ihre start() Code mit diesem:

public static void start() { 
    Intent i = new Intent(getApplicationContext, ConversationsActivity.class); 
    startActivity(i); 
} 

Dann anstelle ConversationsActivity.start(getActivity()); der Verwendung zu nennen, nur start(); verwenden, wenn Sie die Methode aufrufen möchten.

Hoffe, das hilft!

+0

danke für die Antwort, aber ich denke nicht, dass dies die Lösung ist, auch weil es immer funktioniert hat. Warum ApplicationContext? – Ne0

+0

Versuchen Sie es einfach, es funktioniert immer für mich. Application Context ist immer eine sichere Wahl – MrAppMachine

+0

nichts zu tun man :(aber jetzt habe ich festgestellt, dass der gleiche Code mit anderen Aktivitäten von anderen Fragment O.o genannt habe ich keine Ahnung, was passiert ist – Ne0

0

Oder Sie könnten dies tun:

public static void start(Activity activity) { 
    activity.startActivity(new Intent(activity, ConversationsActivity.class)); 
} 
0

Sie sollten getActivity() verwenden, um eine Activity von Fragment zu starten.

Von einem Fragment:Context ist die übergeordnete Aktivität (getActivity()).

Intent intent = new Intent(getActivity(), ConversationsActivity.class); 
startActivity(intent); 

Aus Aktivität:Context ist aktuelle Aktivität (this).

Intent intent = new Intent(this, ConversationsActivity.class); 
startActivity(intent); 
+0

ist was ich tue, siehe den Code bis;) – Ne0

Verwandte Themen