2017-02-09 34 views
0

我瞭解到,popBackStack方法解除與addToBackStack方法定義的操作。安卓碎片,popBackStack方法去太背

findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) 
     { 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragment2 = BlankFragment.newInstance("Fragment 2", ""); 
      listaFragment2.add(fragment2); 
      i++; 
      fragmentTransaction.add(R.id.linearLayout, fragment2); 
      fragmentTransaction.addToBackStack("myfrag"); 
      fragmentTransaction.commit(); 
      //viene salvata l'AZIONE che si COMPIE E BASTA, ovvero quella di aggiungere il fragment2, in caso si volesse annullare questa 
      //operazione per far scomparire SOLO IL FRAGMENT2 

     } 
    }); 
findViewById(R.id.button4).setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      FragmentManager fragmentManager = getSupportFragmentManager(); 
      //si annulla l'operazione a cui il popStack è legato, ovvero si annulla l'operazione di aggiungere il fragment 2 
      //una volta annullato, non si può ripetere il popoBackStack se non è stato precedentemente annunciato 
      fragmentManager.popBackStack("myfrag",1); 
     } 
    }); 

當我按一下按鈕,我添加了片段2號,所以如果我點擊5次按鈕,我加5個片段號碼2.當我點擊將Button4,我想刪除只有最後一個操作(在R.id.button的OnClickListener中定義),所以如果我點擊按鈕5次然後點擊button4,我只想刪除第五個fragment2,因爲從理論上講,添加第五個fragment2是最後一個操作!但是,如果我點擊button4,我刪除所有fragment2。 方法addToBackStack覆蓋並取消前一個方法(該方法是添加第四個fragment2)還是「添加自己」到前一個方法?

回答

2

的問題是,你命名你所有的backstacks「myfrag」的,所以它是彈出所有的backstacks的。

要麼使用i生成一個myFrag1myFrag2等,或不popBackStack使用名稱:

fragmentManager.popBackStack(); 
+0

捷思非常感謝! – Curio