2013-02-13 2 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

+0

Я только что обновил его, спасибо! – Sebiwi

ответ

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() вместо операции, вы можете вызвать метод setFragment() в экземпляре LoginButton. "

Смежные вопросы