2012-04-26 38 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