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?

  • Actionbar Benachrichtigung Count Icon (Abzeichen) wie Google hat
  • Animatoren dürfen nur auf Looper-Threads auf Sherlock Action Bar laufen
  • ActionBarSherlock mit benutzerdefiniertem RelativeLayout zeigt keinen Titeltext an
  • Zwei Aktionsleisten (unten und oben) zur gleichen Zeit?
  • Wie bekomme ich Text auf einem ActionBar Icon?
  • Actionbar konvertiert Tabs zur Liste Navigation, wenn es keinen Raum gibt
  • @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.

  • NavUtils.shouldUpRecreateTask schlägt bei JellyBean fehl
  • Wie bekomme ich MD5 aus debug.keystore Datei?
  • So erzeugen Sie buildConfigField mit String-Typ
  • Recyceln Sie Android-Karten V2 SupportMapFragment beim Drehen
  • Wie kann ich die Spinner Schriftfarbe ändern?
  • Versuchte alles, aber Android-Finish (); Tätigkeit funktioniert nicht
  • 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.