2015-04-17 4 views
8

Я пытаюсь реализовать Facebook «Like Button» в своем приложении для Android. До того, как я использовал Facebook SDK v3, где вы настроили LikeView, а затем вызовите likeView.handleOnActivityResult (context, requestCode, resultCode, data) внутри onActivityResult(); Это изменило бы кнопку так, чтобы после того, как страница была «понравилась», она покажет «Liked» и количество людей, которым также нравится страница.Android Facebook SDK v4 LikeView issue

Теперь я использую SDK для Facebook, потому что v3 теперь устарел. В этой версии я не вижу никакой документации или вообще не имею такого же типа функциональности для кнопки «как». У него больше нет метода likeView.handlePnActivityResult, который был у v3. Теперь, когда пользователь нажимает кнопку «как» и любит страницу, он не изменяет состояние кнопки.

Кто-нибудь знает, как решить эту проблему, чтобы у нее была такая же функциональность, как и LikeView в Facebook SDK v3?

Вот код того, что я делаю:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    // Initialize FaceBook SDK 
    FacebookSdk.sdkInitialize(this); 

    setContentView(R.layout.activity_about); 

    // Set up ActionBar 
    actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 

    terms = (LinearLayout) findViewById(R.id.terms_holder); 
    privacyPolicy = (LinearLayout) findViewById(R.id.privacy_policy_holder); 
    share = (LinearLayout) findViewById(R.id.social_media_holder); 
    environmentButton = (Button) findViewById(R.id.environment_change); 
    likeView = (LikeView) findViewById(R.id.like_view); 

    likeView.setObjectIdAndType("##############", LikeView.ObjectType.PAGE); 

} 

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

    // In the old Facebook SDK this is where it would change the like button to "liked 2,038" but this code is deprecated now apparently 
    // likeView.handleOnActivityResult(this, requestCode, resultCode, data); 
} 

А вот мой XML: ответ

<LinearLayout 
android:id="@+id/social_media_holder" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:paddingBottom="10dp" 
android:gravity="center_vertical" 
android:clickable="true" 
android:onClick="onClick" > 


<com.facebook.share.widget.LikeView 
    android:id="@+id/like_view" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:paddingTop="10dp" />   


<TextView 
    android:id="@+id/post_title" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="5dp" 
    android:text="@string/post_about_us" 
    android:textSize="20dp" 
    android:textColor="@color/dark_grey" /> 

+4

Вам необходимо реализовать CallbackManager, а затем в onActivityResult передать результат с помощью: callbackManager.onActivityResult (requestCode, resultCode, data); – Guardanis

+0

Большое спасибо! – Sloganho

+1

Рад, что я мог помочь ~ – Guardanis

ответ

6

Guardanis правильна (Вопрос Комментарий раздел). Но это код для него (я использовал).

в OnCreate (...)

callbackManager = CallbackManager.Factory.create(); 

в onActivityResult (...)

не
callbackManager.onActivityResult(requestCode, resultCode, data); 
+0

, это не работает для меня. Я использую Parse API для входа в Facebook, и я также добавил ParseFacebookUtils.onActivityResult (requestCode, resultCode, data); в методе onActivityResult(). –

+0

Я решил это, я был упущен, чтобы добавить Tester/developer в приложение Facebook. –

+1

@kalan это сработало для меня спасибо :-) – Prashant

-1

Native Как Кнопка: Родная Как кнопка, предназначенная для мобильных приложений, больше не будет поддерживается с помощью версии SDK версии 4.28 и выше. Предыдущие версии SDK могут по-прежнему использовать Native Like Button, но начиная с 2/6, Native Like Button больше не будет поддерживаться. После 2/6 диалоги для Native Like больше не будут отображаться, а нажатия на любую нативную кнопку не приведут к действию.

+1

Хорошо, но вы не предлагаете решения! – MeLine

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