2013-02-13 161 views
2

如果用户登录,我想在某个部分显示某些内容。但是,如果用户未登录,我想显示一个对话框提示用户登录。我也想在这个对话框中显示facebook登录按钮。对话框中的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方法,它包含一个取消按钮,其将它关闭。

我将不胜感激任何帮助。提前谢谢了。

+0

你可以发布你的代码吗? – Cjames 2013-02-13 15:02:15

+0

我刚更新了,谢谢! – Sebiwi 2013-02-13 15:35:58

回答

4

我想出了这一个,它很简单,但不那么优雅。

我所做的就是将隐藏的主布局内的Facebook登录按钮。然后,我在对话框按钮上设置了一个侦听器,并在其中添加了“facebookLogin.performClick();”。

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

谢谢反正!

0

我也打了同样的错误。但最后我管理得到它的工作:

因此:MainActivity打开WelcomeFragment。 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); 
} 

而且它是在https://developers.facebook.com/docs/android/login-with-facebook/v2.2描述:

“在认证流程中,默认情况下结果会返回主活动,您的活动需要通过覆盖onActivityResult()方法来处理结果。要允许片段接收onActivityResu lt()调用而不是活动,则可以在LoginButton实例上调用setFragment()方法。“