2012-06-17 5 views
1

Я использовал довольно стандартную реализацию ShareActionProvider в своем рабочем баре, и он отлично работает. Однако, когда я запускаю другое действие из actionbutton в панели действий и возвращаюсь из этого действия, раскрывающееся меню SharedActionProvider автоматически открывается.ShareActionProvider автоматически открывается при возврате его активности

Такое поведение не возникает, когда я выполняю тот же самый код, чтобы открыть другое действие с помощью обычной кнопки.

Вот мое меню XML

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@+id/menu_btn_my_scedule" 
    android:icon="@drawable/ic_menu_my_calendar" 
    android:title="To Scedule" 
    android:showAsAction="ifRoom" /> 
<item android:id="@+id/menu_btn_share" 
    android:title="Share.." 
    android:showAsAction="ifRoom" 
    android:actionProviderClass="android.widget.ShareActionProvider" />  
<item android:id="@+id/menu_btn_set_scedule" 
    android:icon="@drawable/ic_menu_today" 
    android:title="Set Scedule" 
    android:showAsAction="collapseActionView" 
    android:actionProviderClass="android.widget.ShareActionProvider" /> 
<item android:id="@+id/menu_btn_settings" 
    android:icon="@drawable/ic_menu_manage" 
    android:title="Settings" 
    android:showAsAction="collapseActionView" 
    android:actionProviderClass="android.widget.ShareActionProvider" /> 
<item android:id="@+id/menu_btn_feedback" 
    android:icon="@drawable/ic_menu_manage" 
    android:title="Feedback/Question" 
    android:showAsAction="collapseActionView" 
    android:actionProviderClass="android.widget.ShareActionProvider" /> 
<item android:id="@+id/menu_btn_about" 
    android:icon="@drawable/ic_menu_info_details" 
    android:title="About" 
    android:showAsAction="collapseActionView" 
    android:actionProviderClass="android.widget.ShareActionProvider" /> 
</menu> 

Другие методы меню:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.optionsmenu, menu); 

    MenuItem actionItem = menu.findItem(R.id.menu_btn_share); 
    ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); 
    actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); 
    actionProvider.setShareIntent(createShareIntent()); 

    return true; 
} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 
     case android.R.id.home: 
      finish(); 
      return false; 
     case R.id.menu_btn_my_scedule: 
      Intent i = new Intent(ONTTOptions.this, ONTTShowScedule.class); 
      i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
      startActivity(i); 
      return true; 
     case R.id.menu_btn_set_scedule: 
      i = new Intent(ONTTOptions.this, ONTTScedule.class); 
      overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
      startActivity(i); 
      return true; 
     case R.id.menu_btn_settings: 
      i = new Intent(ONTTOptions.this, ONTTPreferences.class); 
      overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
      startActivity(i); 
      return true; 
     case R.id.menu_btn_feedback: 
      showFeedbackDialog(); 
      return true; 
     case R.id.menu_btn_about: 
      i = new Intent(ONTTOptions.this, ONTTAboutActivity.class); 
      overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); 
      startActivity(i); 
      return true;  
     default: return super.onOptionsItemSelected(item); 
    } 
} 

private Intent createShareIntent() { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    shareIntent.putExtra(Intent.EXTRA_TEXT, "https://play.google.com/store/apps/details?id=" + ONTTConfig.PACKAGE_NAME); 
    return shareIntent; 
} 

Должно быть, я пропустил что-то где-то, спасибо за любую помощь.

ответ

0

Я нашел проблему. Я думал, что андроид: actionProviderClass = "android.widget.ShareActionProvider" был также необходим для каждого элемента панели действий, который я хотел в меню переполнения. Я просто удалял его на каждом элементе, кроме кнопки share of the course.

Мое меню XML теперь выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@+id/menu_btn_my_scedule" 
    android:icon="@drawable/ic_menu_my_calendar" 
    android:title="To Scedule" 
    android:showAsAction="ifRoom" /> 
<item android:id="@+id/menu_btn_share" 
    android:title="Share.." 
    android:showAsAction="ifRoom" 
    android:actionProviderClass="android.widget.ShareActionProvider" />  
<item android:id="@+id/menu_btn_set_scedule" 
    android:icon="@drawable/ic_menu_today" 
    android:title="Set Scedule" 
    android:showAsAction="collapseActionView" /> 
<item android:id="@+id/menu_btn_settings" 
    android:icon="@drawable/ic_menu_manage" 
    android:title="Settings" 
    android:showAsAction="collapseActionView" /> 
<item android:id="@+id/menu_btn_feedback" 
    android:icon="@drawable/ic_menu_manage" 
    android:title="Feedback/Question" 
    android:showAsAction="collapseActionView" /> 
<item android:id="@+id/menu_btn_about" 
    android:icon="@drawable/ic_menu_info_details" 
    android:title="About" 
    android:showAsAction="collapseActionView" /> 
</menu>