2015-04-17 7 views
8

Sto cercando di implementare il "pulsante Mi piace" di Facebook nella mia app per Android. Prima stavo usando Facebook SDK v3 in cui avresti impostato LikeView e quindi chiamavi likeView.handleOnActivityResult (context, requestCode, resultCode, data) all'interno di onActivityResult(); Questo cambierebbe il pulsante in modo che dopo che la pagina fosse "piaciuta" mostrerebbe "Mi piace" e il numero di persone a cui piace anche la pagina.Android Facebook SDK v4 numero LikeView

Ora, sto utilizzando l'SDK di Facebook v4 perché la versione 3 è ora deprecata. In questa versione, non vedo alcuna documentazione o comunque avere questo stesso tipo di funzionalità per il pulsante "mi piace". Non ha più il metodo like.handlePnActivityResult like che aveva v3. Ora quando l'utente preme il pulsante "Mi piace" e gli piace la pagina, non cambia lo stato del pulsante.

Qualcuno sa come risolvere questo problema in modo che abbia la stessa funzionalità del LikeView in Facebook SDK v3?

Ecco il codice di quello che sto facendo:

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

Ed ecco la mia XML: risposta

<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

È necessario implementare un CallbackManager e quindi, in onActivityResult, passare il risultato ad esso tramite: callbackManager.onActivityResult (requestCode, resultCode, data); – Guardanis

+0

Grazie mille! – Sloganho

+1

Contento di aver potuto aiutare ~ – Guardanis

risposta

6

di Guardanis è corretto (sezione di commento di domanda). Ma questo è il codice per questo (l'ho usato).

in onCreate (...)

callbackManager = CallbackManager.Factory.create(); 

in onActivityResult (...)

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

questo non funziona per me. Sto usando Parse API per l'accesso a Facebook e ho anche aggiunto ParseFacebookUtils.onActivityResult (requestCode, resultCode, data); nel metodo onActivityResult(). –

+0

Ho risolto questo problema, mi mancava aggiungere Tester/sviluppatore all'app Facebook. –

+1

@kalan ha funzionato per me grazie :-) – Prashant

-1

Native Like Button: Il pulsante nativi come, progettato per applicazioni mobili, non sarà più supportato a partire da Facebook SDK versione 4.28 e successive. Le versioni precedenti dell'SDK possono ancora utilizzare il pulsante Native Like, ma a partire dal 2/6, il pulsante Native Like non sarà più supportato. Dopo il 2/6, le finestre di dialogo di Native Like non appariranno più e toccheranno qualsiasi pulsante come nativo che non comporterà alcuna azione.

+1

OK, ma non offrite soluzioni! – MeLine