夫婦的調查小時後,並試圖找到一個解決方案,我決定在這裏寫我的想法的問題,也許別人的臉,還發現了一個修復它。 我有一個菜單的應用程序,選項是一個分享選項一個,聲明這樣的菜單的XML文件:在設備方向可共享意向列表菜單中更改(shareActionProvider)
<item android:id="@+id/menu_share"
android:actionProviderClass="android.widget.ShareActionProvider"
android:title="Share"/>
在onOptionsItemSelected
方法創建和設置共享意圖:
private ShareActionProvider shareActionProvider;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_share:
MenuItem actionItem = optionsMenu.findItem(R.id.menu_share);
shareActionProvider = (ShareActionProvider) actionItem.getActionProvider();
shareActionProvider.setShareIntent(createShareIntent());
return true;
default:
return super.onOptionsItemSelected(item);
}
}
當按下分享菜單選項與應用共享列表中顯示。 我想,當我旋轉,列出可見的設備,而是正在消失的。要提及我不能使用android:configChanges
以防止重新創建活動。
我想先看看我怎麼能打開共享的應用列表編程。
一個)。調用下面的方法不會發生視覺事件;它只是更新了ShareActionProvider
public void showShareItemList() {
MenuItem actionItem = optionsMenu.findItem(R.id.menu_share);
shareActionProvider = (ShareActionProvider) actionItem.getActionProvider();
shareActionProvider.setShareIntent(createShareIntent());
}
b)。調用下面的方法會打開一個新的活動 - 但不是上圖中的菜單選項列表。
public void showShareItemList2(){
Intent sharingIntent = new Intent();
sharingIntent.setAction(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
startActivity(Intent.createChooser(sharingIntent, "Share"));
}
結果:以下方法
Ç)。該只是打開菜單選項:
public void showShareItemList3() {
openOptionsMenu(); // programmatically open the options menu
}
那麼,有沒有一種方法以編程方式打開的應用程序共享項目列表?或者至少有沒有辦法按下菜單鍵編程(=編程方式選擇一個菜單項)?
另一個問題是我怎麼知道共享列表在方向上是否可見?
對於此我使用boolean
可變private boolean isShareOptionMenuListVisible = false;
我將它保存在方法onSaveInstanceState()
和onCreate()
方法恢復了它。 我按isShareOptionMenuListVisible = true
按Share(分享)項目時,但我無法找到一種方法,當它不再可見時變爲false。 使用覆蓋方法onOptionsMenuClosed
是沒有幫助我,因爲這個(這是在文檔,即使我可以說這是不是真實的,因爲在我的應用程序不會被調用),以及「每當選項菜單被關閉被稱爲」我想知道共享應用程序選項菜單何時關閉。
這裏是一個示例文件項目,展示了上述所有問題:project link。
歡迎任何幫助!謝謝。