2

Sherlock에서 AppCompat로 전환하는 중입니다. 여기에 뭔가가로드되는 동안 진행 막대를 새로 고침 작업 항목으로 대체하는 데 사용되었습니다.ActionBarCompat (진행 막대를 ActionBar에 표시)로 Menu 객체를 가져 오는 방법

public void setRefreshButtonState(boolean refreshing) { 
    if (mOptionsMenu == null) { 
     return; 
    } 

    final MenuItem refreshItem = mOptionsMenu.findItem(R.id.action_refresh); 
    if (refreshItem != null) { 
     if (refreshing) { 
      refreshItem.setActionView(R.layout.actionbar_indeterminate_progress); 
     } else { 
      refreshItem.setActionView(null); 
     } 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    mOptionsMenu = menu; 
    return super.onCreateOptionsMenu(menu); 
} 

그러나 메뉴 APPCOMPAT의 일반 메뉴이기 때문에 (셜록과는 달리), 그것은 분명

Call requires API level 11 (current min is 9): android.view.MenuItem#setActionView 
나는 모든 MenuItemCompat 정적 방법을 시도

,하지만 행운을 던졌습니다

감사합니다.

답변

2

잘못된 것을 찾고있었습니다. 이

MenuItemCompat.setActionView(refreshItem, R.layout.actionbar_indeterminate_progress);

+0

덕분에 같은 메뉴 객체하지만 메뉴 항목을 comapt 싶지 않다. 그것은 내 하루를 구했다. 나는 또한 Sherlock에서 Compat로 전환 중이다. – Andres

0
public void setActionItemInProgress(MenuItem menuItem, boolean refreshing) { 
    if (refreshing) { 
     MenuItemCompat.setActionView(menuItem, R.layout.actionbar_indeterminate_progress); 
    } else { 
     MenuItemCompat.setActionView(menuItem, null); 
    } 
}