2012-04-26 13 views
1

は、再利用可能な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

しかし、私が 'replace'を使用すると、将来の使用のために参照を保存することができますか? –

+0

私は 'attach/detach'を使って上記と同じことを達成できますか?そうなら、どうですか? (ユーザーが実際に対応するタブをクリックするまで、残りの2つのタブフラグメントをxmlに入れたくない)。既存のものの代わりに新しく作成したフラグメントを '付ける 'ことができますか? –

関連する問題