2017-03-23 15 views
0

私は助けが必要です。 私は私のアンドロイドアプリケーションの開発の仕上げ段階にいるよ、今から数か月後のアプリを開発する魔法このエラーでクラッシュ:nullオブジェクト参照でandroid.content.Context.getPackageName()を使用してアプリがクラッシュする

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

私は問題が何であるかを知らないが、私は掲載しますクラッシュを引き起こすコード:(フラグメント内の)コードのこの作品と呼ばれる

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

:私が作るきた

ConversationsActivity.start(getActivity()); 

最後の変更は、Fabを追加しました私はこのエラーを生成することができ、何も表示しませんgitのにコミット(特定の支店で)、最後で履歴からric.io

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

Javaスタックトレース全体を投稿してください。 – CommonsWare

+0

質問を更新しました – Ne0

+0

'getActivity()'が 'null'を返しているようです。なぜ私は完全にはわかりません。 – CommonsWare

答えて

0

あなたの問題は、あなたがしていることですインテントを間違って使用する。代わりにそれを呼び出すためにConversationsActivity.start(getActivity());を使用してのその後

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

、あなたがメソッドを呼び出したいときちょうどstart();を使用します。これであなたのスタート()コードを交換してください。

希望すると便利です。

+0

答えに感謝しますが、私はこれが解決策だとは思わない、それはいつも働いていたからです。なぜApplicationContextですか? – Ne0

+0

これを試してください、それは常に私のために働く。アプリケーションコンテキストは常に安全な選択です – MrAppMachine

+0

人は何もしません。(しかし、私は同じコードが別のフラグメントO.oから呼び出された同じコードで動作することを認識しました – Ne0

0

それとも、これを行うことができます:

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

あなたはFragmentからActivityを起動するgetActivity()を使用する必要があります。

フラグメントから:Contextは、親アクティビティ(getActivity())です。 Activityから

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

Contextは現在のアクティビティ(this)です。

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

は何ですか、コードを参照してください;) – Ne0

関連する問題