Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.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
Android 点击按钮打开Facebook登录对话框_Android_Facebook_User Interface - Fatal编程技术网

Android 点击按钮打开Facebook登录对话框

Android 点击按钮打开Facebook登录对话框,android,facebook,user-interface,Android,Facebook,User Interface,大家好,我正在整合facebook登录到我的应用程序。我已经搜索了很多,我可以登录我使用了这个链接: 我想做的就是,当我点击一个按钮时,facebook对话框必须出现在刚刚打开活动(HomeActivity)的界面上,下面是我的代码 public class HomeActivity extends Activity { Facebook facebook = new Facebook("114987225319269"); @Override public

大家好,我正在整合facebook登录到我的应用程序。我已经搜索了很多,我可以登录我使用了这个链接:
我想做的就是,当我点击一个按钮时,facebook对话框必须出现在刚刚打开活动(HomeActivity)的界面上,下面是我的代码

    public class HomeActivity extends Activity {

     Facebook facebook = new Facebook("114987225319269");

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        Button more = (Button) findViewById(R.id.button1);
        more.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {

                facebook.authorize(this, new DialogListener() {
                    @Override
                    public void onComplete(Bundle values) {}

                    @Override
                    public void onFacebookError(FacebookError error) {}

                    @Override
                    public void onError(DialogError e) {}

                    @Override
                    public void onCancel() {}
                });
            }
public void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);

                facebook.authorizeCallback(requestCode, resultCode, data);
            }

        }); 

    }   

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_home, menu);
        return true;
    }
}
在你的舱单上

<activity
android:theme="@android:style/Theme.Translucent"
android:name=".HomeActivity "
>

这会将活动主题更改为
对话框
主题。希望这有助于…

使用此代码

Button more = (Button) findViewById(R.id.button1);
more.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
         if (! facebook.isSessionValid()) {         
             facebook.authorize(HomeActivity.this, PERMISSIONS, new LoginDialogListener()); 
        });
    }
这是登录对话框侦听器

private class LoginDialogListener implements DialogListener {

    public void onComplete(Bundle values) {
        saveCredentials(facebook);
        getAlbumsData task = new getAlbumsData();           
        task.execute();
    }

    public void onFacebookError(FacebookError error) {
        showToast("Authentication with Facebook failed!");
    }

    public void onError(DialogError error) {
        showToast("Authentication with Facebook failed!");
    }

    public void onCancel() {
        showToast("Authentication with Facebook cancelled!");
    }
}

这就是您所需要的:

public class BaseActivity extends Activity
{

    public AsyncFacebookRunner mAsyncRunner;
    public Facebook facebook;
    public SharedPreferences mPrefs;
    public static String appId = "123344";
    SharedPreferences.Editor editor;


    private void initialize()
    {

        facebook = new Facebook(appId);
        mAsyncRunner = new AsyncFacebookRunner(facebook);

    }

    public void verifyLogin()
    {

        mPrefs = getPreferences(MODE_PRIVATE);
        String accessToken = mPrefs.getString("access_token", null);
        facebook.setAccessToken(accessToken);
        long expires = mPrefs.getLong("access_expires", 0);

        if (accessToken != null)
        {
            facebook.setAccessToken(accessToken);
        }

        if (expires != 0)
        {
            facebook.setAccessExpires(expires);
        }

        if (!facebook.isSessionValid())
        {
            facebook.authorize(this, new String[] {
                "email", "publish_stream", "create_event"
            }, new DialogListener()
            {

                @Override
                public void onCancel()
                {
                    // Function to handle cancel event
                }

                @Override
                public void onComplete(Bundle values)
                {
                    // Function to handle complete event
                    // Edit Preferences and update facebook acess_token
                    editor = mPrefs.edit();
                    editor.putString("access_token", facebook.getAccessToken());
                    editor.putLong("access_expires", facebook.getAccessExpires());
                    editor.commit();
                }

                @Override
                public void onError(DialogError error)
                {
                    // Function to handle error

                }

                @Override
                public void onFacebookError(FacebookError fberror)
                {
                    // Function to handle Facebook errors

                }

            });
        }

    }

}

我希望我在主屏幕上添加的按钮,当我点击该按钮时,facebook登录对话框出现。但是这个代码给出了错误。但是如果没有按钮点击监听器,我运行这段代码,那么它不会出现错误,并且运行良好。请帮助…理解我想说的内容?请尝试以下链接:它对我有用。。你有什么错误吗?张贴你的日志Cathi Raja你能告诉我我犯了什么错误吗?代码的逻辑是什么?这样下次我就可以避免那个错误了。ThanksI创建了登录对话框作为一个单独的方法,之后我在单击按钮时调用该方法。就这样。如果你不明白,请告诉我你的疑问。嗨,Raja,最后一件事是如何在你给定的代码和wallposts中启用loggout功能。注销功能在这里不是独立的。是的,我知道它将是独立的,但如何实现它,它的代码是什么??