2012-06-17 2 views
1

내 액션 바에 ShareActionProvider의 꽤 표준 구현을 사용 했으므로 제대로 작동합니다. 그러나 액션 바에서 액션 버튼으로 다른 액티비티를 시작하고 해당 액티비티에서 돌아 오면 SharedActionProvider의 드롭 다운 메뉴가 자동으로 열립니다.ShareActionProvider가 액티비티로 돌아 왔을 때 자동으로 열림

정상적인 단추에서 다른 활동을 열려면 동일한 코드를 실행하면이 문제가 발생하지 않습니다. 어떤 도움

@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; 
} 
어디 선가 뭔가를 놓친합니다

, 감사 :

여기 내 메뉴 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> 

다른 메뉴 방법이다.

답변

0

문제점을 발견했습니다. Android : actionProviderClass = "android.widget.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" /> 
<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>