Tengo un ShareActionProvider junto con algunas otras opciones en mi barra de acciones. Sin embargo, parece que el ShareActionProvider tiene problemas para renderizar correctamente cuando se procesa por primera vez en modo vertical y no se puede hacer clic en la primera representación. Un cambio de orientación vuelve a mostrar la pantalla y, a continuación, se visualizan todas las opciones que se supone que son visibles y, al retroceder, la barra de acciones vuelve a mostrarse, pero esta vez también se está renderizando correctamente en modo vertical.ShareActionProvider no se puede hacer clic y no se muestra correctamente en la primera representación
He adjuntado una imagen que describe la situación:
La opción Compartir no se hace correctamente, debe tener un icono junto a él, y si no se ajusta a la disposición, debería conviértete en un menú de 3 puntos.
Después de la orientación, todas las opciones son visibles como se esperaba.
Al girar de nuevo a retrato, se vuelve a renderizar la barra de acciones y ahora el menú de 3 puntos aparece como debería y se puede hacer clic en él.
¿Alguna idea de lo que está pasando aquí?
Esta es mi XML:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/item_delete"
android:icon="@android:drawable/ic_menu_delete"
android:showAsAction="ifRoom|withText"
android:title="Delete"
android:visible="false"/>
<item
android:id="@+id/item_edit"
android:icon="@android:drawable/ic_menu_edit"
android:showAsAction="ifRoom|withText"
android:title="Edit"
android:visible="false"/>
<item
android:id="@+id/item_share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:showAsAction="ifRoom|withText"
android:title="Share"
android:visible="false"/>
<item
android:id="@+id/item_save"
android:icon="@android:drawable/ic_menu_save"
android:showAsAction="ifRoom|withText"
android:title="Save"
android:visible="false"/>
<item
android:id="@+id/menu_search"
android:actionViewClass="android.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="ifRoom"
android:title="@string/menu_search"
android:visible="false"/>
</menu>
y esto es cómo manejar el menú de opciones en un fragmento:
/**
* Hook into the OptionsMenu and add an Edit, Delete and Share option.
*/
@Override
public void onPrepareOptionsMenu(Menu menu) {
MenuItem deleteItem = menu.findItem(R.id.item_delete);
deleteItem.setVisible(true);
MenuItem editItem = menu.findItem(R.id.item_edit);
editItem.setVisible(true);
MenuItem shareItem = menu.findItem(R.id.item_share);
shareItem.setVisible(true);
shareActionProvider = (ShareActionProvider) shareItem.getActionProvider();
shareActionProvider.setShareIntent(getShareIntent());
super.onPrepareOptionsMenu(menu);
}
/**
* Builds an intent that takes the path for the image and passes it to
* the sharing mechanism as a stream built on the URI of the image path.
* @return the intent to share the image as a stream
*/
private Intent getShareIntent()
{
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + receipt.getPhoto()));
shareIntent.setType("image/jpeg");
return shareIntent;
}
¡Muy interesante! Analizaré esto tan pronto como tenga algo de tiempo libre. ¡Gracias! – span