Java 用于FB登录的Android应用程序不幸停止
我试着用FB登录创建一个Android应用程序。我遵循以下指示: 构建成功,但应用程序不幸停止 我的日志如下所示: 致命异常:AsyncTask#2Java 用于FB登录的Android应用程序不幸停止,java,android,facebook-sdk-4.0,Java,Android,Facebook Sdk 4.0,我试着用FB登录创建一个Android应用程序。我遵循以下指示: 构建成功,但应用程序不幸停止 我的日志如下所示: 致命异常:AsyncTask#2 进程:com.example.android.logintest,PID:2434 java.lang.NullPointerException:尝试调用虚拟方法“int” 空对象引用上的java.lang.Object.hashCode() 在 ConcurrentHashMap.get(ConcurrentHashMap.java:746)
进程:com.example.android.logintest,PID:2434 java.lang.NullPointerException:尝试调用虚拟方法“int” 空对象引用上的java.lang.Object.hashCode() 在 ConcurrentHashMap.get(ConcurrentHashMap.java:746) 在 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) 运行(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);
}
}
package com.example.android.logintest;
导入android.content.Intent;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.TextView;
导入com.facebook.CallbackManager;
导入com.facebook.facebook回调;
导入com.facebook.facebook异常;
导入com.facebook.FacebookSdk;
导入com.facebook.login.LoginResult;
导入com.facebook.login.widget.LoginButton;
公共类MainActivity扩展了AppCompatActivity{
私有文本视图信息;
私人登录按钮登录按钮;
私人CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
sdkinInitialize(this.getApplicationContext());
callbackManager=callbackManager.Factory.create();
setContentView(R.layout.main_活动);
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
info.setText(
“用户ID:”
+loginResult.getAccessToken().getUserId()
+“\n”+
“身份验证令牌:”
+loginResult.getAccessToken().getToken()
);
}
@凌驾
公开作废{
info.setText(“登录尝试已取消”);
}
@凌驾
公共无效onError(FaceBook例外e){
info.setText(“登录尝试失败”);
}
});
}
受保护的void onActivityResult(int请求代码、int结果代码、意图数据)
{
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
重新检查您提供的中的步骤4和5
上面显示的NullPointerException通常在您没有在AndroidManifest应用程序元数据中提供应用程序的applicationId时出现
另外,请确保已将com.facebook.facebook活动添加为清单中的另一个活动可能的重复项logcat中是否有哈希键?