2014-07-15 4 views
0

FragmentTabHost를 사용하여 탭을 만듭니다. 번역 후 tabtrap이 fragmenttabhost에서 사라졌습니다.

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.tabwidget); 
     // mTabHost = new FragmentTabHost(this); 
     // mTabHost.setup(this, getSupportFragmentManager(), 
     // R.id.menu_settings); 
     mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); 
     mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 
     Resources res = getResources(); 
     // first tab 
     Bundle b = new Bundle(); 
     b.putString("key", url1); 
     mTabHost.addTab(
       mTabHost.newTabSpec("vipusk").setIndicator(getTabIndicator(0)), 
       VypuskTabFragment.class, b); 
     // second tab 
     b = new Bundle(); 
     b.putString("key", url2); 
     TabSpec newTab = mTabHost.newTabSpec("constructor"); 
     newTab.setIndicator((getTabIndicator(1))); 
     mTabHost.addTab(newTab, ConstructorTabFragment.class, b); 
     // third tab 
     b = new Bundle(); 
     b.putString("key", url3); 
     mTabHost.addTab(
       mTabHost.newTabSpec("popular").setIndicator(getTabIndicator(2)), 
       PopularTabFragment.class, b); 
     // forth tab 
     b = new Bundle(); 
     b.putString("key", url4); 
     mTabHost.addTab(
       mTabHost.newTabSpec("actual").setIndicator(getTabIndicator(3)), 
       ActualTabFragment.class, b); 
     mTabHost.setOnTabChangedListener(tabChanged); 
     DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
       .cacheInMemory(true).cacheOnDisk(true).build(); 
     ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
       getApplicationContext()).defaultDisplayImageOptions(
       defaultOptions).build(); 
     ImageLoader.getInstance().init(config); // Do it on Application start 
    } 

다음 탭 조각에 somepoint에서 그 transation 내 tabwidget의 disapears 후 다른

Fragment details = new Fragment1(); 
       FragmentTransaction transaction = getFragmentManager() 
         .beginTransaction(); 

       Bundle bundles = new Bundle(); 
       bundles.putSerializable("key", articles.get(position).getLink() 
         + "?templateStyle=19"); 
       details.setArguments(bundles); 
       transaction.replace(android.R.id.content, details); 
       transaction.addToBackStack(null); 
       transaction.commit(); 

를 호출합니다. 내가 알기로는, 수행하는 트랜잭션 유형이 개별 탭의 내용이 아닌 전체 fragmenttabhost를 대체합니다. 어떻게 이런 행동을 피할 수 있습니까?

편집 : 나는 행동을 원하는 얻을 것이다

transaction.replace(android.R.id.content, details); 

transaction.replace(R.id.realtabcontent, details); 

에 의해 대체하지만, 다시 탐색에 병이 바람직하지 않은 whichi, 다시 이전의 조각을 다시로드해야하는 경우

답변

0

최상위 조각을 대체하여 오류가 발생했습니다. 탭 조각에 추가 컨테이너를 만들고 콘텐츠 조각 대체품으로 사용합니다.

관련 문제