2014-07-15 51 views
0

我正在使用FragmentTabHost创建选项卡。翻译后从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我调用另一个

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(); 

是TRANSATION我tabwidget在前看不见了。据我了解,我执行的交易类型替换整个fragmenttabhost而不是单个标签的内容。我怎样才能避免这种行为?

编辑: 如果我更换

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

通过

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

我会得到期望的行为,但在后退导航生病不得不再次刷新以前的片段,whichi不希望

回答

0

错误是由顶级片段的替换导致的。在制表符片段中放置制作额外的容器并将其用于内容片段替换