-1

so I'm getting an exception on my Android App, that I have no idea where comes from. And yes my code is a complete mess now from trying to fix it.

Somehow my setcontentview is pointing somewhere null, but I have really no idea where and why.

MainActivity.java

package com.example.nan.spymap;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.parse.LogInCallback;
import com.parse.Parse;
import com.parse.ParseFacebookUtils;
import com.parse.ParseUser;
import com.parse.SaveCallback;
import com.parse.SignUpCallback;

import java.text.ParseException;

public class MainActivity extends FragmentActivity {

    private CallbackManager callbackManager;

    private TextView info;
    private LoginButton loginButton;
    Button mActionButton;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Parse.initialize(this, "KEY", "KEY");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //final ParseUser user = new ParseUser();
        //user.setUsername("my name");
       //user.setPassword("my pass");
        //user.setEmail("email@example.com");

// other fields can be set just like with ParseObject
       // user.put("phone", "650-555-0000");
/**
 *

        user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(com.parse.ParseException e) {
                if (e == null) {
                    // Hooray! Let them use the app now.
                } else {
                    // Sign up didn't succeed. Look at the ParseException
                    // to figure out what went wrong
                }
            }
        });
 */


        ParseFacebookUtils.initialize(this);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();


        info = (TextView)findViewById(R.id.info);
        loginButton = (LoginButton)findViewById(R.id.login_button);

        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                startActivity(new Intent(MainActivity.this, MapActivity.class));
                Profile profile = Profile.getCurrentProfile();
                Log.d("facebook id",profile.getId());
                Log.d("facebook name", profile.getFirstName());

            }

            @Override
            public void onCancel() {
                info.setText("Login attempt cancelled.");
            }

            @Override
            public void onError(FacebookException e) {
                info.setText("Login attempt failed.");
            }

        });

        mActionButton = (Button) findViewById(R.id.Sbutton);
        mActionButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this, SignupActivity.class));

            }
        });
        View decorView = getWindow().getDecorView();
// Hide the status bar.
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.

        ActionBar actionBar = getActionBar();
        actionBar.hide();

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
       ParseFacebookUtils.onActivityResult(requestCode, resultCode, data);
    }

}

My main activity xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:padding="16dp"
    android:id="@+id/spymap"
    android:background="#79dbff">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/info"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:textSize="18sp"
        />

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sign Up"
        android:id="@+id/Sbutton"
        android:layout_marginTop="40dp"
        android:layout_below="@+id/login_button"
        android:layout_centerHorizontal="true" />
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Get stalked"
        android:id="@+id/textView"
        android:layout_above="@+id/login_button"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="68dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Don't worry, totally not gonna steal your data"
        android:id="@+id/textView2"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="47dp" />

</RelativeLayout>

and the errors;

09-23 12:18:11.289  13106-13106/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.nan.spymap, PID: 13106
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nan.spymap/com.example.nan.spymap.MainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.facebook.login.widget.LoginButton
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.facebook.login.widget.LoginButton
            at android.view.LayoutInflater.createView(LayoutInflater.java:633)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.example.nan.spymap.MainActivity.onCreate(MainActivity.java:45)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.example.nan.spymap.MainActivity.onCreate(MainActivity.java:45)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
            at com.facebook.internal.Validate.sdkInitialized(Validate.java:136)
            at com.facebook.AccessTokenTracker.<init>(AccessTokenTracker.java:55)
            at com.facebook.login.widget.LoginButton$2.<init>(LoginButton.java:561)
            at com.facebook.login.widget.LoginButton.configureButton(LoginButton.java:561)
            at com.facebook.FacebookButtonBase.<init>(FacebookButtonBase.java:66)
            at com.facebook.login.widget.LoginButton.<init>(LoginButton.java:200)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.example.nan.spymap.MainActivity.onCreate(MainActivity.java:45)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
NicklasN
  • 484
  • 1
  • 7
  • 20
  • It is clearly mentioned in the error : "The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first" so before setting the view do that – Shadow Droid Sep 23 '15 at 10:24
  • @NicklasN : Try FacebookSdk.sdkInitialize(this); instead of FacebookSdk.sdkInitialize(getApplicationContext()); – AndiGeeky Sep 23 '15 at 10:25
  • Hey i am not sure of it, but can you write **Parse.initialize(this, "EsOSbCtBvwx6S2ZojAP3JWh7TcNiy5czMguNMYmh", "nLUoS1u1408ZYUt6YZFeiPvZz0iI0WPncjvnmh0h");** just below super(); method. – ULHAS PATIL Sep 23 '15 at 10:28
  • When I outcomment this, // ParseFacebookUtils.initialize(this); It will launch. .but crashes as soon as I hit sign up :/ – NicklasN Sep 23 '15 at 10:28
  • @NicklasN : Change ' MainActivity extends FragmentActivity' to ' MainActivity extends Activity' and see if it works..!! – AndiGeeky Sep 23 '15 at 10:38
  • Hey Andi, it works now, I just forgot to add activity for signup in my manifest... Everything seems to work fine now! Thanks everybody for ur help! :) – NicklasN Sep 23 '15 at 10:40

5 Answers5

1

Put following line:

FacebookSdk.sdkInitialize(getApplicationContext()); 

this before setContentView()

Pratik Butani
  • 60,504
  • 58
  • 273
  • 437
0

I edited the oncreate to this;

@Override
    protected void onCreate(Bundle savedInstanceState) {

        FacebookSdk.sdkInitialize(this);
        Parse.initialize(this, "KEY", "KEY");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ParseFacebookUtils.initialize(this);

And it works now..

NicklasN
  • 484
  • 1
  • 7
  • 20
0

The stack trace is pretty clear:

Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

you need to call

FacebookSdk.sdkInitialize(getApplicationContext());

before

setContentView(R.layout.activity_main);
Sascha Kolberg
  • 7,092
  • 1
  • 31
  • 37
0

Your stack trace states

The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

See the documentation for FacebookSdk:

This function initializes the Facebook SDK, the behavior of Facebook SDK functions are undetermined if this function is not called. It should be called as early as possible.

So just move the relevant initialization up

@Override
protected void onCreate(Bundle savedInstanceState) {
    Parse.initialize(this, "KEY", "KEY");
    ParseFacebookUtils.initialize(this);
    FacebookSdk.sdkInitialize(getApplicationContext());
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    [...]
 }
tynn
  • 38,113
  • 8
  • 108
  • 143
-3

Your printstacktrace clearly states that Error inflating class com.facebook.login.widget.LoginButton

You are using a custom widget com.facebook.login.widget.LoginButton go through its documentation and check your inflate

check this question

Community
  • 1
  • 1
user3616287
  • 145
  • 1
  • 1
  • 11
  • @AndiGeeky I don't think stackoverflow is a personal debugger. Here people wont solve the questions which can be found with a little bit of searching time. – user3616287 Sep 23 '15 at 10:29
  • I've been searching for a solution all morning, I'm just very new to android and java and it isnt easy understanding all the answers when it isnt directly applicable for your application.. :/ – NicklasN Sep 23 '15 at 10:34