ShareActionProvider aktualisieren Text

Ich habe eine EditText, die zunächst mit Text aus dem lokalen db gefüllt ist. Wenn der Benutzer den Bildschirm verlässt (onPause), wird der aktualisierte Text im lokalen db gespeichert. Ich habe auch einen ShareActionProvider (mit ActionBarSherlock).

Wenn der Benutzer den ShareActionProvider verwendet, wird der alte Text an die Zielanwendung gesendet. Wie kann ich den Text durch den Actionprovider senden, wenn der Benutzer den Menüpunkt drückt?

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.share_action_provider, menu); MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar); mActionProvider = (ShareActionProvider) actionItem.getActionProvider(); mActionProvider.setShareIntent(createShareIntent()); } private Intent createShareIntent() { Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("text/plain"); shareIntent.putExtra(Intent.EXTRA_TEXT, editText.getText().toString()); return shareIntent; } 

Es scheint onOptionsItemSelected () wird nicht aufgerufen, wenn der Benutzer den Menüpunkt drückt. Also habe ich folgendes onPause () probiert, ohne Glück:

 @Override public void onPause() { super.onPause(); mActionProvider.setShareIntent(createShareIntent()); // save to db: getActivity().saveText(editText.getText().toString()); } 

BTW: Dieser Code ist alles in einem Fragment.

  • Festlegen eines benutzerdefinierten Freigabesymbols auf der Aktionsleiste ShareActionProvider
  • Ich benutze ShareActionProvider in PopupMenu, aber zeige zwei PopupMenu?
  • Größe der ShareAction Icon Ausgabe auf ActionBar mit ShareActionProvider-v7
  • Null-Pointer-Ausnahme bei der Verwendung von Support-Bibliotheks-Share-Action-Provider
  • Wie schalten Sie den Aktienverlauf aus, wenn Sie ShareActionProvider verwenden?
  • Kann nicht von ActionProvider zu ShareActionProvider geworfen werden
  • Wie bekomme ich meine ShareActionProvider, um Text zu übermitteln Dynamisch (von Hörern) sehen Pager etc
  • Kann nicht in der Lage sein, Action-Provider zu teilen Aktionsanbieter
  • 3 Solutions collect form web for “ShareActionProvider aktualisieren Text”

    Vielleicht ein bisschen übertrieben, aber ich habe es funktioniert, indem du die Share Intent jedes Mal, wenn das EditText-Feld geändert wird. Ich habe einen TextWatcher-Listener hinzugefügt:

      editText.addTextChangedListener(new TextWatcher(){ @Override public void afterTextChanged(Editable s) { if(mActionProvider!=null) { mActionProvider.setShareIntent(createShareIntent()); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { }}); 

    Ich stolperte über die gleiche Frage und ich löste, indem ich meine Aktie Absicht als Mitglied Variable in meiner Tätigkeit. Ich ShareActionProvider es als die Aktie Absicht in der ShareActionProvider in onCreateOptionsMenu und dann kann ich die Absicht von überall in der Aktivität zu aktualisieren. Um zu vermeiden, dass Sie Ihre Absicht neu erstellen und doppelte Einträge haben, können Sie Ihre Updates in ein Bundle und die Extras in der Absicht mit Intent.replaceExtras(Bundle extras) ersetzen. Das hat für mich gearbeitet Viel Glück.

    Um das ShareIntent zu aktualisieren, denke ich, dass du auch aufPrepareOptionsMenu überschreiben musst

    Also in OnPrepareOptionsMenu. OnPrepareOptionsMenu wird immer aufgerufen, kurz bevor das Menü angezeigt wird. Rufen Sie wieder an

     mActionProvider.setShareIntent(createShareIntent()); 

    Bearbeiten: Versuchen Sie das

      private class MyActionProvider extends ShareActionProvider{ public MyActionProvider(Context context) { super(context); } @Override public void onPrepareSubMenu(SubMenu subMenu) { setShareIntent(createshareintent()); super.onPrepareSubMenu(subMenu); } } 

    Und benutze diese Klasse in R.id.menu_item_share_action_provider_action_bar.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.