2015-11-08 9 views
5

Ich mag Aktie Aktion in meinem Projekt implementieren, aber wenn ich MenuItem verwenden es gibt Laufzeitfehler MenuItemCompat stattdessen zu verwenden, aber es ist zu Fehler geben.Wie implementiert man Share-Aktion in Android?

ist hier mein Code:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_third_, menu); 
    MenuItem menuItem = menu.findItem(R.id.menu_item_share); 


    mShareActionProvider = (ShareActionProvider) menuItem.getActionProvider(); 

    mShareActionProvider.setShareIntent(getDefaultShareIntent()); 

    return true; 
} 

public Intent getDefaultShareIntent(){ 

    Intent shareIntent = new Intent(Intent.ACTION_SEND); 

    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "SUBJECT"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT,"Extra Text"); 
    return shareIntent; 
} 
+0

fehlt Sie sollten auch die Stacktrace hinzufügen. – tynn

Antwort

0

Ich glaube, Sie subclassedAppCompatActivity für Ihre Aktivität haben, aufgrund derer Sie diesen Fehler erhalten, bitte folgenden Code

initialisieren ShareActionProvider in Ihrer Tätigkeit nutzen

import android.support.v7.widget.ShareActionProvider; 
import android.support.v4.view.MenuItemCompat; 


    private ShareActionProvider mShareActionProvider; 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     // Locate MenuItem with ShareActionProvider 
     MenuItem item = menu.findItem(R.id.action_share); 

     // Fetch and store ShareActionProvider 
     mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item); 

     mShareActionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); 
     // Set share Intent. 
     // Note: You can set the share Intent afterwords if you don't want to set it right now. 
     mShareActionProvider.setShareIntent(createShareIntent()); 
     // Return true to display menu 
     return true; 
    } 

    // Create and return the Share Intent 
    private Intent createShareIntent() { 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("text/plain"); 
     shareIntent.putExtra(Intent.EXTRA_TEXT, "http://play.google.com/store/apps/details?id=pk.nimgade.Bostan.Train.Schedule"); 
     Intent intent = Intent.createChooser(shareIntent,"Share"); 
     return shareIntent; 
    } 

und das ist, wie Sie Ihre xML-Ansicht wie

wäre
<item 
     android:id="@+id/action_share" 
     app:actionProviderClass="android.support.v7.widget.ShareActionProvider" 
     app:showAsAction="always" 
     android:title="Share" /> 

stellen Sie bitte Ihre SDK aktualisiert wird, in diesem eigenartigen Fall habe ich in das laufen, es ist böse, wenn Sie nicht wissen, was

Verwandte Themen