2012-04-26 40 views
1

为Android碎片可重复使用的 - 我的意思是,如果我可以像下面使用代码:Android片段是否可重复使用?

class MyTabActivity extends FragmentActivity implements OnClickListener { 

    Fragment[] tabs = new Fragment[3]; 

    @Override 
    protected void onCreate(Bundle bundle) { 
     super.onCreate(bundle); 
     setContentView(R.layout.settings_activity); 
     findViewById(R.id.button1).setOnClickListener(this); 
     findViewById(R.id.button2).setOnClickListener(this); 
     findViewById(R.id.button3).setOnClickListener(this); 

     //first xml-defined fragment, it is inside 
     //FrameLayout with id R.id.loadTarget -> see openTab() 
     tabs[0] = getSupportFragmentManager().findFragmentById(
       R.id.firstFragment); 
    } 

    private void openTab(int i) { 
     final FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.replace(R.id.loadTarget, getTabFragment(i)); 
     ft.addToBackStack(null); 
     ft.commit(); 
    } 

    private Fragment getTabFragment(int i) { 
     if(tabs[i] == null) { 
      switch(i) { 

       //0-tab fragment has been allready 
       //retrieved in onCreate 

       case 1: 
        tabs[1] = new MySecondTabFragment(); 
        break; 
       case 2: 
        tabs[2] = new MyThirdTabFragment(); 
        break; 
      } 
     } 
     return tabs[i]; 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()) { 
      case R.id.button1: 
       openTab(0); 
       break; 
      case R.id.button2: 
       openTab(1); 
       break; 
      case R.id.button3: 
       openTab(2); 
       break; 
     } 
    } 
} 

回答

0

是片段是可重用的,你可以安装/拆卸一个片段活动数次。正如您在分离后的文档中所看到的那样,片段被销毁并在添加到其他活动时再次创建。

+0

但是,如果我使用'替换',那么它仍然是合法的存储参考供将来使用? – 2012-04-26 18:11:38

+0

我是否可以通过'attach/detach'实现与上述相同的操作 - 如果是这样,怎么办? (我不想在xml中放置两个剩余的选项卡片段,直到用户实际单击相应的选项卡为止)。我可以“附加”新创建的片段代替现有的片段吗? – 2012-04-26 18:14:35