-1

I'm following the tutorial shown here https://developers.facebook.com/docs/android/login-with-facebook/v2.2

I'm receiving a Null Pointer Exception

12-16 19:28:21.319: E/AndroidRuntime(28446): FATAL EXCEPTION: main
12-16 19:28:21.319: E/AndroidRuntime(28446): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kpfunusa1/com.kpfunusa1.SplashScreen}: java.lang.NullPointerException
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2260)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.ActivityThread.access$600(ActivityThread.java:139)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1277)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.os.Looper.loop(Looper.java:156)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.ActivityThread.main(ActivityThread.java:5045)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at java.lang.reflect.Method.invokeNative(Native Method)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at java.lang.reflect.Method.invoke(Method.java:511)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at dalvik.system.NativeStart.main(Native Method)
12-16 19:28:21.319: E/AndroidRuntime(28446): Caused by: java.lang.NullPointerException
12-16 19:28:21.319: E/AndroidRuntime(28446):    at com.kpfunusa1.MainFragment.onCreateView(MainFragment.java:67)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.support.v4.app.Fragment.performCreateView(Fragment.java:1504)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:942)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1121)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1484)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:571)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1195)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.Activity.performStart(Activity.java:4553)
12-16 19:28:21.319: E/AndroidRuntime(28446):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198)
12-16 19:28:21.319: E/AndroidRuntime(28446):    ... 11 more

It's happening on startup with my initial class. It has something to do with the code I added from the tutorial indicated underneath /FACEBOOK FRAGMENT SETUP/

package com.fb_test_package;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.graphics.Point;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentActivity;
import android.view.Display;

public class SplashScreen extends FragmentActivity {
    // Splash screen timer
    public static int height;
    public static int width;

    private static int SPLASH_TIME_OUT = 1;
    //FB FRAGMENT
    private MainFragment mainFragment;


    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.splash_screen_layout);


         /* FACEBOOK FRAGMENT SETUP */
        if (savedInstanceState == null) {
            // Add the fragment on initial activity setup
            mainFragment = new MainFragment();
            getSupportFragmentManager()
            .beginTransaction()
            .add(android.R.id.content, mainFragment)
            .commit();
        } else {
            // Or set the fragment from restored state info
            mainFragment = (MainFragment) getSupportFragmentManager()
            .findFragmentById(android.R.id.content);
        }

        if(android.os.Build.VERSION.SDK_INT >= 13){
            Display display = getWindowManager().getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            width = size.x;
            height = size.y;
        }else{
            Display display = getWindowManager().getDefaultDisplay(); 
            width = display.getWidth();  // deprecated
            height = display.getHeight();

        }



        new Handler().postDelayed(new Runnable() {

            /*
             * Showing splash screen with a timer. This will be useful when you
             * want to show case your app logo / company
             */

            @Override
            public void run() {
                // This method will be executed once the timer is over
                // Start your app main activity

                Intent in = getIntent();
                String tab = in.getStringExtra("tab");


                Intent i = new Intent(SplashScreen.this, ActivityLogin.class);
                i.putExtra("tab", tab);
                startActivity(i);

                // close this activity
                finish();
            }
        }, SPLASH_TIME_OUT);
    }
}

I can't seem to figure out what is causing this. Fragments is a new concept to me, perhaps I am initializing it incorrectly?

Here is the code from mainFragment that was causing the Null Pointer exception. As indicated in the answer. Turns out I was referencing the wrong view when trying to load my authButton. Because I was integrating the login to an existing app the layout containing the authButton was not main.

public View onCreateView(LayoutInflater inflater, 
            ViewGroup container, 
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.main, container, false);

        LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
        authButton.setFragment(this);
        authButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_friends", "user_birthday", "user_location", "user_website", "user_likes", "user_status"));

        return view;
    }
tomjung
  • 715
  • 3
  • 11
  • 34
  • 1
    Null pointer exceptions are always solved the same way; figure out which object is being dereference that is null. – Robert Harvey Dec 17 '14 at 01:49
  • possible duplicate of [What is a Null Pointer Exception, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-i-fix-it) – stkent Dec 17 '14 at 02:55

1 Answers1

0

Something is wrong on your MainFragment class as stated here.

12-16 19:28:21.319: E/AndroidRuntime(28446): Caused by: java.lang.NullPointerException
12-16 19:28:21.319: E/AndroidRuntime(28446): at com.kpfunusa1.MainFragment.onCreateView(MainFragment.java:67)

Post up the code see if we can help.

Ookami
  • 36
  • 5
  • Thank you, I spent too long in front of the computer and was looking in the wrong place for the null pointer. I added the code above in case someone else runs into this particular issue. – tomjung Dec 17 '14 at 17:17