无碎片的java Facebook 安卓 sdk登录按钮
我在安卓工作室的一个项目中工作,没有任何片段。我一直在loginButton上得到一个NullPointerException,即使在分配了一行之后:
loginButton = (LoginButton) findViewById(R.id.login_button);
主要活动的相关部分。爪哇:
public class MainActivity extends ActionBarActivity {
LoginButton loginButton;
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions("user_friends");
loginButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
}
});
setContentView(R.layout.activity_main);
// Callback registration
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
// App code
}
@Override
public void onCancel() {
// App code
}
@Override
public void onError(FacebookException exception) {
// App code
}
});
}
还有活动。xml:
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:tools="http://schemas.安卓.com/tools" 安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
安卓:padding="0dp"
tools:context=".MainActivity">
<com.facebook.login.widget.LoginButton
安卓:id="@+id/login_button"
安卓:layout_centerHorizontal="true"
安卓:layout_width="wrap_content"
安卓:layout_height="wrap_content"
安卓:layout_gravity="center_horizontal"
安卓:layout_marginBottom="30dp" />
</RelativeLayout>
我不明白为什么loginbutton在那一行之后仍然是空的,我也不知道如何解决这个问题。如果有人能帮我建立一个使用Android Studio的Facebook登录的项目,那就太好了,即使它使用了片段。我不反对碎片,但我对Android是新手,所以我决定不使用碎片,因为我不完全理解它们。我查看了Facebook的示例项目,但找不到Android Studio项目文件,并且一直未能使用他们的单个示例文件设置项目
# 1 楼答案
在使用Facebook SDK 4.7时,您也可以使用以下代码,这对我来说很有用
facebook login android
# 2 楼答案
这将产生一个空指针错误。 因此,您只需先初始化facebookSDK,然后设置ContentView,然后设置callBackManager
# 3 楼答案
视图(登录按钮)必须在
setContentView(R.layout.activity_main);
之后初始化,因此需要移动在
setContentView(R.layout.activity_main);
之后注意:
FB SDK
应该在setContentView()
之前初始化# 4 楼答案
在分配登录按钮之前,尝试将setContentView()移动到任何位置。像这样: