Java 对话框内的Facebook登录按钮

Java 对话框内的Facebook登录按钮,java,android,facebook,mobile,Java,Android,Facebook,Mobile,如果用户已登录,我希望在分区上显示某些内容。但是,如果用户没有登录,我想显示一个对话框,提示用户登录。我还想在此对话框中显示facebook登录按钮 但是,对话框中的登录按钮似乎不起作用。当我把它放在活动布局中时,它确实起作用了 有没有办法让它在对话框中正常工作 以下是xml对话框: <?xml version="1.0" encoding="UTF-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/a

如果用户已登录,我希望在分区上显示某些内容。但是,如果用户没有登录,我想显示一个对话框,提示用户登录。我还想在此对话框中显示facebook登录按钮

但是,对话框中的登录按钮似乎不起作用。当我把它放在活动布局中时,它确实起作用了

有没有办法让它在对话框中正常工作

以下是xml对话框:

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ImageView
        android:id="@+id/heart"
        android:layout_width="80dp"
        android:layout_height="70dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="70dp"
        android:background="@drawable/favorite_dialog"/>

    <TextView
        android:id="@+id/question_favorites"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF" 
        android:layout_below="@+id/heart"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="20dp"
        android:layout_centerHorizontal="true"
        android:textStyle="bold"
        android:textSize="20sp"/>

     <TextView
        android:id="@+id/explanation_favorites"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#FFFFFF" 
        android:layout_below="@+id/question_favorites"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="40dp"
        android:layout_marginRight="40dp"
        android:textSize="18sp"
        android:textStyle="italic"
        android:layout_centerHorizontal="true"/>

     <com.facebook.widget.LoginButton
        android:id="@+id/authButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_above="@+id/button"
        android:layout_centerHorizontal="true"
        />

    <Button 
        android:id="@+id/button"
        android:layout_height="40dp"
        android:layout_width="200dp"
        android:text="Cancelar"
        android:textStyle="bold"
        android:textSize="18sp"
        android:layout_marginTop="10dp"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="30dp"
        android:background="@drawable/cancel"/>

</RelativeLayout>
这个对话框显示在onCreate方法上,它包含一个取消按钮,取消它


我将感谢任何帮助。非常感谢。

我想出来了,它很简单,但不那么优雅

我所做的是把facebook登录按钮放在主布局中,隐藏起来。然后,我在对话框按钮上设置了一个侦听器,并在其中添加了facebookLogin.performClick

将点击重定向到facebook登录侦听器


无论如何谢谢你

我想出来了,它很简单,但不那么优雅

我所做的是把facebook登录按钮放在主布局中,隐藏起来。然后,我在对话框按钮上设置了一个侦听器,并在其中添加了facebookLogin.performClick

将点击重定向到facebook登录侦听器


无论如何谢谢你

我也犯了同样的错误。但最后我还是设法让它发挥作用:

所以:MainActivity打开了一个片段。WelcomeFragment打开LoginDialog我自己的对话框。在LoginDialog中,我有facebookLogin按钮。 在MainActivity中,根据facebook的教程,我拥有了我应该拥有的一切:UiLifecycleHelper uiHelper实例,它在onResume、onActivityResult、onPause、onDestroy和onSaveInstanceState中调用。LoginDialog中的登录按钮已通过以下方式初始化:

LoginButton authButton = (LoginButton) findViewById(R.id.facebookLogin);
authButton.setReadPermissions(Arrays.asList("email"));
authButton.setFragment(welcomeFragment);
但在我将onActivityResult添加到WelcomeFragment之前,这是不起作用的,就像在MainActivity中一样:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    ((MainActivity)getActivity()).uiHelper.onActivityResult(requestCode, resultCode, data);
}
此外,还对其进行了描述:


在身份验证流期间,默认情况下,结果返回到主活动。您的活动需要通过重写onActivityResult方法来处理结果。要允许片段接收onActivityResult调用而不是activity,可以在LoginButton实例上调用setFragment方法。

我也遇到了同样的错误。但最后我还是设法让它发挥作用:

所以:MainActivity打开了一个片段。WelcomeFragment打开LoginDialog我自己的对话框。在LoginDialog中,我有facebookLogin按钮。 在MainActivity中,根据facebook的教程,我拥有了我应该拥有的一切:UiLifecycleHelper uiHelper实例,它在onResume、onActivityResult、onPause、onDestroy和onSaveInstanceState中调用。LoginDialog中的登录按钮已通过以下方式初始化:

LoginButton authButton = (LoginButton) findViewById(R.id.facebookLogin);
authButton.setReadPermissions(Arrays.asList("email"));
authButton.setFragment(welcomeFragment);
但在我将onActivityResult添加到WelcomeFragment之前,这是不起作用的,就像在MainActivity中一样:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    ((MainActivity)getActivity()).uiHelper.onActivityResult(requestCode, resultCode, data);
}
此外,还对其进行了描述:


在身份验证流期间,默认情况下,结果返回到主活动。您的活动需要通过重写onActivityResult方法来处理结果。要允许片段接收onActivityResult调用而不是activity调用,您可以在LoginButton实例上调用setFragment方法。

您可以发布代码吗?我刚刚更新了它,谢谢!你能发布你的代码吗?我刚刚更新了,谢谢!