2015-04-17 8 views
8

Próbuję zaimplementować "przycisk podobny do Facebooka" w mojej aplikacji na Androida. Zanim użyłem pakietu Facebook SDK v3, w którym chciałbyś skonfigurować LikeView, a następnie wywołać metodę likeView.handleOnActivityResult (context, kod requestCode, kod wynikowy, dane) wewnątrz onActivityResult(); Spowoduje to zmianę przycisku, aby po "polubieniu" strony wyświetlało się "Liked" i liczba osób, które również lubiły tę stronę.Android Facebook SDK v4 LikeView issue

Teraz używam pakietu Facebook SDK v4, ponieważ wersja v3 jest już nieaktualna. W tej wersji nie widzę żadnej dokumentacji ani tego, aby mieć taki sam typ funkcji dla przycisku "Lubię to". Nie ma już metody likeView.handlePnActivityResult, którą posiadała v3. Teraz, gdy użytkownik kliknie przycisk "polubienie" i polubi stronę, nie zmienia stanu przycisku.

Czy ktoś wie, jak rozwiązać ten problem, aby miał taką samą funkcjonalność jak LikeView w Facebook SDK v3?

Oto kod tego, co robię:

@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); 
} 

I tu jest mój XML: odpowiedź

<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

Musisz zaimplementować program wywołujący wywołanie zwrotne, a następnie, w onActivityResult, przekazać wynik do niego przez: callbackManager.onActivityResult (requestCode, kod wynikowy, dane); – Guardanis

+0

Dziękuję bardzo! – Sloganho

+1

Cieszę się, że mogę pomóc ~ – Guardanis

Odpowiedz

6

Guardanis jest prawidłowe (sekcja komentarz pytanie za). Ale to jest kod (użyłem).

w onCreate (...)

callbackManager = CallbackManager.Factory.create(); 

w onActivityResult (...)

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

to nie działa dla mnie. Używam API Parse do logowania na Facebooku i dodałem również ParseFacebookUtils.onActivityResult (requestCode, resultCode, data); w metodzie onActivityResult(). –

+0

Rozwiązałem to, nie udało mi się dodać testera/programisty do aplikacji na Facebooku. –

+1

@kalan to działało dla mnie dzięki :-) – Prashant

-1

Native Like Button: The Native Like Button, przeznaczony dla aplikacji mobilnych, nie będzie już obsługiwane od wersji Facebook SDK w wersji 4.28 lub wyższej. Wcześniejsze wersje SDK nadal mogą używać Native Like Button, ale począwszy od 2/6, przycisk Native Like nie będzie już obsługiwany. Po 2/6, okna dialogowe dla Native Like nie będą się pojawiać, a kliknięcia dowolnego natywnego przycisku spowodują brak działania.

+1

OK, ale nie oferujesz rozwiązania! – MeLine