我有一個ShareActionProvider以及我的ActionBar中的一些其他選項。然而,似乎ShareActionProvider在第一次以縱向模式呈現時出現問題,並且在第一次呈現時無法點擊。方向更改會重新渲染屏幕,然後所有應該可見的選項都可見,並且在旋轉時,ActionBar會再次重新渲染,但這次它也會在縱向模式下正確渲染。ShareActionProvider不可點擊,並且在第一次渲染時不能正確渲染
我已經把它貼描述的情況的圖像:
的分享選項不正確地呈現,它應該有一個圖標旁邊,如果它不適合佈局,它應該成爲一個三點菜單。
定位後所有選項都如預期一樣可見。
旋轉回肖像重新呈現的ActionBar和現在的3點菜單出現,因爲它應該和它是可點擊的。
關於這裏發生了什麼的任何想法?
這是我的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>
,這是我如何處理的選項菜單中的一個片段:
/**
* 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;
}
非常有趣!我會盡快進行調查。謝謝! – span