2012-11-04 2 views
0

FragmentAdapter 및 ViewPage에 대한 참조를 보유하는 MainActivity가 있습니다. 이 작업에서는 , 나는 FragmentAdapter에 두 개의 목록에 파편이 목록을 추가Fragment1의 메뉴 메서드가 Fragment2에서 호출됩니다.

fragments.add(Fragment.instantiate(this, Fragment1.class.getName()));  
fragments.add(Fragment.instantiate(this, Fragment2.class.getName())); 

는 지금, 나는 그 두 조각을 슬라이드에 성공적으로 수 있어요. 사실, 둘 다 ListFragments입니다. 각 단편에는 많은 항목이 나열되어 있습니다.

각 항목에 대해 클릭 할 수 있고 메뉴 항목이 나타납니다.

Fragment1에서 public boolean onContextItemSelected(MenuItem item)이 Fragment1 내에서 sucessfull이 호출되는 문제가 발생합니다 (이 조각 내부에 중단 점 추가).

Fragment2에서 동일한 테스트를 수행하면 Frag1의 중단 점이 호출되고 Frag2의 중단 점이 호출되지 않습니다. 그리고 분명히 Frag1의 데이터가 Frag2에 표시됩니다.

누구나 본 적이 있습니까?

은이 같은 두 조각의 메뉴를 실체화 :

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { 
     super.onCreateContextMenu(menu, v, menuInfo); 
     menu.add(Menu.NONE, R.id.share, Menu.NONE, getString(R.string.share)); 
     menu.add(Menu.NONE, R.id.delete, Menu.NONE, getString(R.string.delete_all)); 
    } 

안부, 펠리페을

+0

지금 막 주목 한 내용은 다음과 같습니다. Frag1에서 Menu 메서드를 처음 사용하면 Frag2에서 메서드를 사용하려고하면 Frag1이 호출됩니다. Frag2에서 Menu 메서드를 처음 사용할 경우 Frag1에서 메서드를 사용하면 Frag2가 호출됩니다. 어딘가에 뭔가있는 것이 기억에 남아 있습니다. –

답변

2

기본적으로 우선 순위를 얻을 것이다 첫번째 인스턴스화 중 조각. invalidateOptionsMenu를 사용하는 솔루션의 경우 this 링크를 참조하십시오. 기본적으로 옵션 메뉴는 안드로이드에 유효하지 않다고 말할 때까지 지속됩니다. 구형 시스템에서는 onPrepareOptionsMenu에서 메뉴를 변경할 수 있지만 액션 바에는 옵션 메뉴의 아이콘이 있으므로 완전히 파괴해야합니다.

그래서 새 조각으로 페이지를 이동하면 옵션 메뉴가 무효화됩니다. 오래된 장치의 경우 onPrepareOptionsMenu를 체크하여 어떤 조각이 표시되는지 확인하고 해당 옵션을 표시하십시오.

+0

그것은 일했다! 대단히 감사합니다. ActivityCompact 클래스에 대해 알지 못했습니다. –

관련 문제