0

작업 표시 줄에 새로 고침 메뉴 항목이 있습니다. 나는이 같은 행동 뷰 (== 액션 바에서 쇼를 진행 표시 줄) 확장 할 수 있습니다 :조각의 onCreateView는 onCreateOptionsMenu 전에 호출되므로 조각 실행시 동작보기를 확장 할 수 없습니다.

menuItem.setActionView(R.layout.action_view_refresh); 
menuItem.expandActionView(); 

을 나는이를 수행 할 때 작업 표시 줄에서 메뉴 항목에 사용자 프레스.

하지만 지금은 응용 프로그램이 시작될 때 자동으로 표시하고 내 조각 (조각의 onCreateView) 보여줍니다. 문제는 onCreateView 후에 호출되는 함수를 내는 menuItem가 초기화

public boolean onCreateOptionsMenu(Menu menu) 

,이다.

onCreateOptionsMenu 전에 menuItem을 초기화하여 onCreateView에서 actionView를 확장 할 수 있습니까?

+1

이유 : 그냥 invalidate 메소드를 호출 할 수 createView 당신의 조각에

// YourActivity boolean trigger = false; public void invalidate(boolean isTrigger) { trigger = isTrigger; supportInvalidateOptionsMenu(); } @Override public boolean onPrepareOptionsMenu(Menu menu) { if(trigger) { MenuItem menuitem = menu.findViewById(R.id.menu_id); menuItem.setActionView(R.layout.action_view_refresh); menuItem.expandActionView(); // reset trigger trigger = false; } return super.onPrepareOptionsMenu(menu); } 

그런 : 경우에 당신은 먼저 활동 수준이 같은 일을 할 수 있고, 조각이 방아쇠를 당길 할 대신에 onCreateOptionsMenu()에서 "actionView를 확장하지"않습니까? 'onCreateView()'에서 이것을하는 것에 대한 마법은 무엇인가? – CommonsWare

+0

이 확장 된 동작보기는 항상 http 요청을 한 경우에만 켜져 야합니다. 하지만 당신의 생각은 괜찮습니다. 지금이 방법으로 처리했습니다. Txx – DixieFlatline

답변

2

일반적으로 supportInvalidateOptionsMenu을 사용하여 메뉴 항목에 새로 고침 또는 일부 동작을 트리거합니다. 모든 업데이트 작업은 onPrepareOptionsMenu() 안에 있어야합니다.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    // trigger the actionview 
    ((YourActivity) getActivity()).invalidate(true); 
}