2016-06-29 13 views
1

Also ich möchte eine benutzerdefinierte Facebook-Freigabe-Taste in meine Android-App zu implementieren, aber bisher habe ich nur die native, die ich in meine .xml-Datei importiert und gemacht Verwendung von in meiner Java-Aktivität für diese bestimmte Seite.Benutzerdefinierte Facebook Share-Button, Android App

Mein Code sieht so aus (in .xml);

<com.facebook.share.widget.ShareButton 
      android:id="@+id/share_btn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:contentDescription="Share" 
      android:layout_centerHorizontal="true"/> 

Und in meinem .java, außerhalb onCreate();

private ShareButton shareButton; 

ShareLinkContent content = new ShareLinkContent.Builder() 
     .setContentUrl(Uri.parse("https://developers.facebook.com")) 
     .setContentTitle("MyTitle") 
     .build(); 

Inside onCreate();

Wie würde ich eine benutzerdefinierte Schaltfläche verwenden, die ich in XML importiert habe? Die Verwendung von .setShareContent funktioniert offensichtlich nicht, wenn es keine Instanz von ShareButton ist. Danke im Voraus!

+0

keine Lösung gefunden? Ich bin auch in derselben Situation geblieben. –

Antwort

3

Ich habe eine Lösung gefunden. Es ist klar, dass die Facebook-Freigabe auf einem eigenen Button-Klick-Ereignis funktionieren wird. Sie müssen also explizit die Methode View.performclick() aufrufen.

Hier ist, wie ich dies getan haben:

<com.facebook.share.widget.ShareButton 
     android:id="@+id/share_btn_fb" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="gone" 
     android:contentDescription="@string/share" /> 

    <LinearLayout 
     android:id="@+id/share_btn" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="4" 
     android:orientation="horizontal" 
     android:gravity="center_vertical"> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="15dp" 
      android:src="@drawable/google_share" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/share_google" 
      android:textColor="@color/green_color" 
      android:layout_marginLeft="5dp" 
      android:textSize="18sp" /> 
    </LinearLayout> 

Innen Aktivität erhalten refrences dieser Ansichten

In meinem Layout.

ShareButton shareButton = (ShareButton) layout.findViewById(R.id.share_btn_fb); 
    LinearLayout shareFB = (LinearLayout) layout.findViewById(R.id.share_btn); 
    LinearLayout shareGoogle = (LinearLayout) layout.findViewById(R.id.share_google); 
    shareGoogle.setOnClickListener(this); 
    shareFB.setOnClickListener(this); 

Innen onClick()

case R.id.share_btn : 
       shareButton.performClick(); 
       break; 
      case R.id.share_btn_fb : 
       ShareLinkContent content = new ShareLinkContent.Builder() 
         .setContentTitle("Content title") 
         .setContentDescription("App descr") 
         .setContentUrl(Uri.parse("some url")) 
         .build(); 
       shareButton.setShareContent(content); 
       break; 

Grundsätzlich shareButton.performClick(); tut den Trick.

+0

Es ist ein Weg herum, aber funktioniert! Gut – Mrinmoy

Verwandte Themen