2016-06-02 8 views
2

Ich versuche, auf meinem Handy auf die ShareActionProvider-Schaltfläche zu klicken, aber es reagiert nicht vollständig. Keine der Freigabe-Apps wie SMS oder E-Mail erscheint. Ich habe den ShareActionProvider als menu_share in meiner XML-Datei gekennzeichnet und verwende die Methode onOptionsItemSelected, um auf Klicks zu reagieren.Ich konnte nicht auf ShareAction Provider klicken

Java

import android.support.v7.widget.ShareActionProvider; 

public class MainActivityFragment extends Fragment{ 
     ArrayAdapter<String> mForecastAdapter; 
     //String[] parsedWeatherData; 
     ShareActionProvider provider; 


public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     inflater.inflate(R.menu.forecastfragment, menu); 
     MenuItem item = menu.findItem(R.id.menu_share); 
     provider = (ShareActionProvider)  
     MenuItemCompat.getActionProvider(item); 
    } 

public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.menu_share: 
       Log.d("Weather", "Is menu share clicked"); 
       doShare(); 
       break; 
      default: 
       break; 
     } 
     return true; 
    } 

public void doShare() { 
     String message = oneDayWeather; 

     // populate the share intent with data 


     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_TEXT, message); 
     provider.setShareIntent(intent); 
    } 

XML

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:bwq="http://schemas.android.com/apk/res-auto" 
    > 

    <item 
     android:id="@+id/menu_share" 
     android:title="@string/menu_share" 
     bwq:actionProviderClass="android.support.v7.widget.ShareActionProvider" 
     bwq:showAsAction="always"/> 


</menu> 

Irgendwelche Ideen?

Antwort

0

Egal, ich habe es gelöst. Diese Version von ShareActionProvider funktioniert nur, wenn Sie die setShareIntent-Methode unmittelbar nach dem Abrufen des Providers festlegen. Zum Beispiel:

 MenuItem item = menu.findItem(R.id.menu_share); 
     provider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); 
     provider.setShareIntent(getDefaultShareIntent());