0

Facebookのボタンでフラグメントを作成しました。それは何度か働いていましたが、ナビゲーションアプリの引き出しを使用してフラグメントを開こうとすると、アプリがクラッシュしています。以下Facebookボタンのフラグメントが開けず、アプリケーションを終了しない

スタックトレースである:

E/AndroidRuntime:致命的な例外:メイン プロセス:com.myclass.myapp、PID:3526 れるjava.lang。 NullPointerException:仮想メソッド 'void com.facebook.AccessTokenTrackerを呼び出しようとしました。 startTracking()」com.myclass.myapp.FacebookLogin.onCreateにおけるNULLオブジェクト参照 (FacebookLoginの.java:82)で android.support.v4.app.Fragment.performCreateで (Fragment.java。 2177) android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1244) (android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1080) android.support.v4)にあります。 app.FragmentTransition.calculateFragments(FragmentTransition.java:971) android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:95) android.support.v4.app.Fra android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008)の に、android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2043)の を追加します。 android.os.Handler.dispatchMessageでandroid.os.Handler.handleCallback(Handler.java:751) でandroid.support.v4.app.FragmentManagerImpl $ 1.run(FragmentManager.java:710) で (Handler.java :95) とandroid.os.Looper.loop(Looper.java:154) とandroid.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .run(ZygoteInit.java:865) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) アプリケーションが終了しました。フラグメントクラスの

コード:

public class FacebookLogin extends Fragment { 

    //initialize WebView 
    private TextView mTextDetails; 
    private CallbackManager mCallbackManager; 
    private AccessTokenTracker mTokenTracker; 
    private ProfileTracker mProfileTracker; 

    private FacebookCallback<LoginResult> mCallback=new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      AccessToken accessToken = loginResult.getAccessToken(); 
      Profile profile = Profile.getCurrentProfile(); 
      displayWelcomeMessage(profile); 
     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException error) { 

     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getActivity().getApplicationContext()); 
     mCallbackManager=CallbackManager.Factory.create(); 
     AccessTokenTracker tracker=new AccessTokenTracker() { 
      @Override 
      protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) { 

      } 
     }; 

     ProfileTracker profileTracker=new ProfileTracker() { 
      @Override 
      protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) { 
       displayWelcomeMessage(currentProfile); 
      } 
     }; 

     mTokenTracker.startTracking(); 
     mProfileTracker.startTracking(); 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.facebook_login, container, false); 
    } 

    private void displayWelcomeMessage(Profile profile){ 
     if (profile != null){ 
      mTextDetails.setText(profile.getName()); 
     } 

    } 



    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); 
     loginButton.setReadPermissions("user_friends"); 
     loginButton.setFragment(this); 
     loginButton.registerCallback(mCallbackManager,mCallback); 

     mTextDetails = (TextView)view.findViewById(R.id.text_details); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     Profile profile=Profile.getCurrentProfile(); 
     displayWelcomeMessage(profile); 
    } 

    @Override 
    public void onStop(){ 
     super.onStop(); 
     mTokenTracker.stopTracking(); 
     mProfileTracker.stopTracking(); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     mCallbackManager.onActivityResult(requestCode,resultCode, data); 
    } 
} 
+1

て貼り付けてくださいコードも...私たちは何を知りたいどう? –

+0

@DharmbirSingh。コードを更新しました。ハッシュキーを生成するためにアプリケーションクラスを使用しました... –

+0

以下の答えを確認してください... – rafsanahmad007

答えて

0

あなたのonCreate()も

mTokenTracker = new AccessTokenTracker() { 
     @Override 
     protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) { 
      updateWithToken(newToken); 
     } 
    }; 
    mTokenTracker.startTracking(); 

mTokenTrackerを初期化していない、あなたのmProfileTracker初期化されていません

mProfileTracker = new ProfileTracker() { 
            @Override 
            protected void onCurrentProfileChanged(com.facebook.Profile profile_old, com.facebook.Profile profile_new) { 
             // profile2 is the new profile 
             profile = profile_new; 
             mProfileTracker.stopTracking(); 
            } 
           }; 
           mProfileTracker.startTracking(); 
+0

私のために働いた... –

関連する問題