6

Sto usando Sherlock Biblioteca barra delle azioni, che è simile alle barre di azione ICS, il luogo in cui mi sono bloccato è presenteCome faccio ad avere il mio ShareActionProvider di presentare il testo in modo dinamico (da ascoltatori) vista cercapersone ecc

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    menu.add("Save") 
    .setIcon(R.drawable.ic_compose).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    menu.add("Search") 
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

    SubMenu sub = menu.addSubMenu("Options"); 
    sub.add(0, SubMenu.NONE, 0, "First"); 
    sub.add(0,SubMenu.NONE, 1, "Second"); 
    sub.add(0, SubMenu.NONE, 2, "Three"); 
    sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 

    // HERE IS WHere I AM FACING PROBLEM IN 
    getSupportMenuInflater().inflate(R.menu.share_action_provider, menu); 
    // Set file with share history to the provider and set the share intent. 
    actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar); 
    ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); 
    actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); //this is BRILLIANT WAY TO AVOID REPEATation 
    actionProvider.setShareIntent(createShareIntent()); 

    return super.onCreateOptionsMenu(menu); 
} 

private Intent createShareIntent() { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 

    //THIS TEXT IS WHAT I WANT TO OBTAIN DYNAMICALLY 
    shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Something goes here"); 
    return shareIntent; 
} 

Ogni volta che prova a mettere il actionProvider.setShareIntent(createShareIntent()); all'interno di un ascoltatore o in qualsiasi altro che la actionProvider.setShareIntent(createShareIntent()); ottengo D/View(11753): onTouchEvent: viewFlags is DISABLED

desidero includere questo fornitore di Action sharing e desidera introdurre il mio testo che viene generato su input dell'utente.

Qualsiasi input è benvenuto.

L'aggiunta di questo non funziona

actionItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      Log.e("THIS IS NEVER CALLED", "??"); 
      return true; 
     } 
    }); 

Come posso ottenere un aggiornamento per il pulsante Condividi viene cliccato

risposta

-1

io uso menù come questo:

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.your_share_button_name: 
     share(); 
     return true; 

    } 
} 

    private void share() { 
    Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
    sharingIntent.setType("text/plain"); 
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
      "your text"); 
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
      "your subject"); 
    startActivity(Intent.createChooser(sharingIntent, "Share using")); 
} 

questo è tutto. Ti suggerisco di mettere tutto il layout del menu in un xml nella tua cartella res/menu.

+0

hai davvero bisogno di leggere correttamente la domanda. –

0

mi ha colpito un problema simile con un derivato android.support.v7.app.ActionBarActivity (anche se credo che questo approccio dovrebbe funzionare per qualsiasi attività) e ho overrode onPrepareOptionsMenu e ottenuto l'effetto che si erano dopo:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); 
    if (actionProvider != null) { 
     actionProvider.setShareIntent(createShareIntent()); 
    } 
    return super.onPrepareOptionsMenu(menu); 
} 
Problemi correlati