2013-06-19 2 views
0

현재 탭을 클릭하여 해당 활동의 첫 번째 화면으로 돌아 가면 해당 작업이 전혀 수행되지 않습니다. addFlag (Intent.FLAG_ACTIVITY_CLEAR_TOP)를 비롯한 많은 답변이 제안되지만, 전혀 발생하지 않습니다.현재 탭에서 활동 다시로드

현재 탭이 검색 활동이라고 가정 해 보겠습니다. 이 작업은 MainActivity 파일에 정의되었습니다

final Intent searchIntent = new Intent().setClass(this, SearchActivity.class); 
    searchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
TabSpec tabSearch = tabHost.newTabSpec(AppConstants.TAG_SEARCH).setIndicator("",resources.getDrawable(R.drawable.tab_search_off_btn)).setContent(searchIntent); 

탐색 경로 SearchActivity에서 것 -> SearchByBankFragment -> CardListFragment -> CategoryListFragment ->.

나는 어떤 일이 발생해도 다른 탭을 장애없이 전환 할 수 있습니다. 그러나 같은 탭에서 메인 레벨로 돌아가는 것은 일어나지 않습니다.

내가 CardListFragment를 사용 중이고 SearchActivity의 기본 수준으로 돌아가려면 위의 탭 버튼을 클릭해야합니다. 그러나 내가 확신 할 수없는 것은 내가 생략했는지 여부이다.

그냥 onResume과 관련이 있는지 확인하려면 onResume 메서드를 재정의하고 invalidate 명령을 추가해야합니다.

조각 수준에서 또는 주요 활동 자체에서 뭔가를 놓친 적이 있습니까?

답변

0

백 스택에 쌓여있는 모든 조각을 제거하면됩니다. popBackStack (null, FragmentManager.POP_BACK_STACK_INCLUSIVE)을 사용하면 트릭을 수행해야합니다. 사용자가 가장 많이 탭을 친 때이를 호출하십시오.

+0

내가 이 시점에서 현재 탭이 클릭 된 것과 동일한 경우 TabHost에 이벤트를 처리하는 기능이 없습니다. 어쩌면 어떤 사람들은 이것을 처리하기 위해 TabHost의 다른 하위 클래스가 만들어 져야한다고 말했을 것입니다. –

0

은 "그냥 가 가기 backstack에 쌓여 된 조각을 모두 제거해야 할 것 같은데. 트릭을 할해야 popBackStack (널 (null), FragmentManager.POP_BACK_STACK_INCLUSIVE)를 사용. 때 사용자 히트의 것을 를 호출하는 최상위 탭. "

해당 활동에 속한 각 조각에서 해당 popStackBack을 구현하는 것을 말하는 것이라고 추측합니다. onTabChanged를 시도했지만, 불행히도 실제로 작동하지 않습니다.

는 여기에 내가 (이 OnCreateView에있어) 테스트하고있는 SearchBankFragment의 코드에서 필수적인 라인의 일부입니다 :

을 : 난 그냥 작동 생각하지 않는 onTabChanged 이벤트를 퍼팅 시도

final Activity activity = SearchActivity.activity //parent Activity; 
final TabHost tabHost = (TabHost) activity.getParent().findViewById(android.R.id.tabhost); 

tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

     @Override 
     public void onTabChanged(String tabId) { 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.replace(R.id.fragmentContainer, new SearchMainFragment()); 
      ft.remove(SearchBankFragment.this); 
      fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
      ft.commit(); 

     } 
    }); 

참고 : 탐색과 같다 : SearchActivity -> SearchMainFragment -> SearchBankFragment -> CardListFragment -> CategoryListFragment -> OfferListFragment - 일> OfferActivity

관련 문제