[英]Facebook android sdk login button without fragments
我正在Android Studio的一個沒有任何片段的項目中工作。 即使在將行分配給它之后,我仍然在loginButton上收到NullPointerException:
loginButton = (LoginButton) findViewById(R.id.login_button);
MainActivity.java的相關部分:
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
}
});
}
和activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp"
tools:context=".MainActivity">
<com.facebook.login.widget.LoginButton
android:id="@+id/login_button"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="30dp" />
</RelativeLayout>
我不知道為什么那行之后loginbutton仍然為null,我不確定如何解決此問題。 如果有人可以幫助我建立一個使用Android Studio的Facebook登錄名設置的項目,那即使使用片段也很好。 我對片段一無所知,但是我是Android的新手,所以我決定不使用片段,因為我不完全理解它們。 我瀏覽了Facebook的示例項目,但找不到Android Studio項目文件,並且始終無法使用其單獨的示例文件來設置項目。
在分配loginButton之前,嘗試將setContentView()移動到任何位置。 像這樣:
public class MainActivity extends ActionBarActivity {
LoginButton loginButton;
CallbackManager callbackManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//right here
setContentView(R.layout.activity_main);
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) {
}
});
// 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
}
});
}
您還可以在使用Facebook SDK 4.7時使用以下對我有用的代碼
您的視圖(登錄按鈕)必須在setContentView(R.layout.activity_main);
之后初始化setContentView(R.layout.activity_main);
所以你需要移動
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);
注意: FB SDK
應該在setContentView()
之前初始化
這將給出一個空指針錯誤。 因此,您所需要做的就是首先初始化facebookSDK,然后初始化setContentView,然后設置callBackManager。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.