用于FB LOGIN的Android应用程序不幸停止

时间:2016-01-23 15:56:14

标签: java android facebook-sdk-4.0

我尝试使用FB登录创建Android应用。我按照以下说明进行操作:

http://code.tutsplus.com/tutorials/quick-tip-add-facebook-login-to-your-android-app--cms-23837

构建成功,但不幸的是应用程序停止了。

我的logcat如下所示:

  

致命异常:AsyncTask#2
  处理:com.example.android.logintest,PID:2434                                                                                    java.lang.NullPointerException:尝试调用虚方法'int   空对象引用上的java.lang.Object.hashCode()'                                                                                        在   java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:746)                                                                                        在   java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:774)                                                                                        在com.facebook.internal.Utility.queryAppSettings(Utility.java:823)                                                                                        在com.facebook.login.widget.LoginButton $ 1.run(LoginButton.java:489)                                                                                        在   java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)                                                                                        在   java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)                                                                                        在java.lang.Thread.run(Thread.java:818)

主要活动如下:

    package com.example.android.logintest;

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.TextView;

    import com.facebook.CallbackManager;
    import com.facebook.FacebookCallback;
    import com.facebook.FacebookException;
    import com.facebook.FacebookSdk;
    import com.facebook.login.LoginResult;
    import com.facebook.login.widget.LoginButton;


    public class MainActivity extends AppCompatActivity {

    private TextView info;
    private LoginButton loginButton;
    private CallbackManager callbackManager;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(this.getApplicationContext());

        callbackManager = CallbackManager.Factory.create();
        setContentView(R.layout.main_activity);
        loginButton = (LoginButton) findViewById(R.id.login_button);
        loginButton.registerCallback(callbackManager, new           FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                info.setText(
                        "User ID: "
                                + loginResult.getAccessToken().getUserId()
                                + "\n" +
                                "Auth Token: "
                                + loginResult.getAccessToken().getToken()
                );

            }

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

            }

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

            }
        });

    }


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

        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

1 个答案:

答案 0 :(得分:0)

重新检查您提供的link中的第4步和第5步。

上面显示的NullPointerException通常在您未在AndroidManifest应用程序元数据中提供应用程序的applicationId时出现

另外,请确保已将com.facebook.FacebookActivity添加为清单中的另一项活动