Actualizar texto de ShareActionProvider
Tengo un EditText que se llena inicialmente con el texto del db local. Cuando el usuario abandona la pantalla (onPause), el texto actualizado se almacena en el db local. También tengo un ShareActionProvider (usando ActionBarSherlock).
Cuando el usuario utiliza ShareActionProvider, el texto antiguo se envía a la aplicación de destino. ¿Cómo puedo actualizar el envío de texto a través de la actionprovider cuando el usuario presiona el elemento de menú?
- Cómo manejar ShareActionProvider evento onClick
- Android: ShareActionProvider sin historial
- Cómo diseñar el Share Action Provider en Android
- Barra de herramientas El tema ShareActionProvider siempre está oscuro
- No se puede emitir de ActionProvider a ShareActionProvider
@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; }
Parece que onOptionsItemSelected () no se llama cuando el usuario presiona el elemento de menú. Así que probé la siguiente onPause (), sin suerte:
@Override public void onPause() { super.onPause(); mActionProvider.setShareIntent(createShareIntent()); // save to db: getActivity().saveText(editText.getText().toString()); }
BTW: Este código está todo en un fragmento.
- Android: XML personalizado para ShareActionProvider
- ¿Pasar la URL de WebView a ShareActionProvider?
- Configuración de un icono de recurso compartido en Actionbar ShareActionProvider
- ¿Cómo desactivas el historial de acciones cuando usas ShareActionProvider?
- Comparte el menú usando android.support.v7 no muestra los iconos de las aplicaciones
- Sólo cuatro opciones para ShareActionProvider con ActionBarSherlock
- Estilo de menú ShareActionProvider
- Cómo eliminar YourSelf de la lista ShareActionProvider
Tal vez un poco excesivo, pero lo conseguí trabajando estableciendo la intención de compartir cada vez que se cambia el campo EditText. He añadido un oyente TextWatcher:
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) { }});
Tropecé con el mismo problema y resolví tener mi intención de parte como una variable de miembro en mi actividad. Lo configuro como la intención de compartir en ShareActionProvider
en onCreateOptionsMenu
y luego puedo actualizar la intención desde cualquier parte de la actividad. Para evitar tener que recrear su intención y tener entradas dobles en ella, puede poner sus actualizaciones en un Bundle
y reemplazar los extras en la intención con Intent.replaceExtras(Bundle extras)
. Esto funcionó para mí. Buena suerte.
Para actualizar el shareIntent supongo que tendrá que anular onPrepareOptionsMenu también
Así que en OnPrepareOptionsMenu. OnPrepareOptionsMenu se llama cada vez justo antes de mostrar el menú. Call setshareintent de nuevo
mActionProvider.setShareIntent(createShareIntent());
Editar: probar esto
private class MyActionProvider extends ShareActionProvider{ public MyActionProvider(Context context) { super(context); } @Override public void onPrepareSubMenu(SubMenu subMenu) { setShareIntent(createshareintent()); super.onPrepareSubMenu(subMenu); } }
Y utilizar esta clase en R.id.menu_item_share_action_provider_action_bar.
- Cómo deshabilitar evento de clic de marcador?
- Problema con la eliminación de la polilínea google map v2 android