2015-02-05 2 views
-1

У меня есть активность, в которой случайно загружен фрагмент. А также есть кнопка, которая случайным образом изменяет фрагмент. Накладываются один на другой фрагмент. Как очистить предыдущий фрагмент?Как удалить предыдущий фрагмент?

Button btn = (Button) findViewById(R.id.btn);   
btn.setOnClickListener(new OnClickListener() {      
    @Override 
    public void onClick(View v) {initUI();}}); 

private void initUI() {  
    ft = getFragmentManager().beginTransaction(); 
    setRandomFragment();  
    }    
private void setRandomFragment() {       
    Random random = new Random(); 
    int randomFragmentNum = random.nextInt(150); 
    if (randomFragmentNum < 50) { 
     randomFragmentNum = 0;  
     ft.addToBackStack(null); 
     } else if (randomFragmentNum < 100) { 
      randomFragmentNum = 1;  
      ft.addToBackStack(null); 
      } else if (randomFragmentNum < 150) { 
       randomFragmentNum = 2;     
      }     
    //random choose fragment 
    switch (randomFragmentNum) { 
     case 0: { 
      fragment1 = new LevelOneMyach(); 
      ft.add(R.id.fragCont, fragment1);      
      ft.commit(); 
      break; 
     } 
     case 1: { 
      fragment2 = new LevelOneTucha(); 
      ft.add(R.id.fragCont, fragment2);      
      ft.commit(); 
      break; 
      } 
     case 2: { 
      fragment3 = new LevelOneIaschik(); 
      ft.add(R.id.fragCont, fragment3);      
      ft.commit(); 
      break; 
      } 
     }  
    } 
+0

Используйте 'заменить' вместо 'добавить' – user543

+0

возможного дубликата [Удалить старый фрагмент из управляющего фрагмента] (http://stackoverflow.com/questions/22474584/ remove-old-fragment-from-fragment-manager) – Nanites

+0

Спасибо! «Заменить» помогло мне –

ответ

0

Используйте этот метод

Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_FRAGMENT); 
if(fragment != null) 
getSupportFragmentManager().beginTransaction().remove(fragment).commit();