Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无碎片的Facebook android sdk登录按钮_Java_Android_Facebook_Facebook Login_Facebook Android Sdk - Fatal编程技术网

Java 无碎片的Facebook android sdk登录按钮

Java 无碎片的Facebook android sdk登录按钮,java,android,facebook,facebook-login,facebook-android-sdk,Java,Android,Facebook,Facebook Login,Facebook Android Sdk,我在Android Studio的一个项目中工作,该项目没有任何片段。我一直在loginButton上得到一个NullPointerException,即使在用以下行分配它之后: loginButton = (LoginButton) findViewById(R.id.login_button); MainActivity.java的相关部分: public class MainActivity extends ActionBarActivity { Logi

我在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
            }
        });
    }
公共类MainActivity扩展了ActionBarActivity{
登录按钮登录按钮;
CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(“用户朋友”);
loginButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
}
});
setContentView(R.layout.activity_main);
//回调注册
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
//应用程序代码
}
@凌驾
公开作废{
//应用程序代码
}
@凌驾
public void onError(facebook异常){
//应用程序代码
}
});
}
和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仍然是空的,我也不知道如何解决这个问题。如果有人能帮我建立一个使用Android Studio的Facebook登录的项目,即使它使用片段也很好。我不反对片段,但我是Android新手,所以我决定不使用片段b因为我不完全理解他们。我查看了Facebook的示例项目,但找不到Android Studio项目文件,并且始终无法使用他们的单个示例文件设置项目。

在分配登录按钮之前,尝试将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
        }
    });
}
公共类MainActivity扩展了ActionBarActivity{
登录按钮登录按钮;
CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//就在这里
setContentView(R.layout.activity_main);
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(“用户朋友”);
loginButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
}
});
//回调注册
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
//应用程序代码
}
@凌驾
公开作废{
//应用程序代码
}
@凌驾
public void onError(facebook异常){
//应用程序代码
}
});
}
在分配登录按钮之前,尝试将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
        }
    });
}
公共类MainActivity扩展了ActionBarActivity{
登录按钮登录按钮;
CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//就在这里
setContentView(R.layout.activity_main);
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(“用户朋友”);
loginButton.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
}
});
//回调注册
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
//应用程序代码
}
@凌驾
公开作废{
//应用程序代码
}
@凌驾
public void onError(facebook异常){
//应用程序代码
}
});
}
您的视图(登录按钮)必须在
设置内容视图(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()之前初始化
您的视图(登录按钮)必须在
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,然后设置ContentView,然后设置callBackManager。

这将产生空指针错误。
因此,您所需要做的就是先初始化facebookSDK,然后设置ContentView,然后设置callBackManager。

您还可以使用以下代码,这对我很有用,同时使用Facebook SDK 4.7


您也可以使用以下代码,这对我很有用,同时使用Facebook SDK 4.7


此解决方案完成了吗?是的。即使我在其他sdk上也有相同的错误。此解决方案完成了吗?是的。即使我在其他sdk上也有相同的错误。