2014-06-11 209 views
1

因此,一個親本片段中的兩個片段爲MAPSLISTMAPS是我的地圖片段,LIST是正常的listview。我有兩個按鈕MAPS_BUTTONLIST_BUTTON。當加載主片段時,默認加載MAPS片段,但是當我單擊列表按鈕時,LIST片段將加載MAPS所在的位置。我的問題是,每當我在LIST片段,並且我點擊MAPS_BUTTONLIST片段不會被刪除,它總是停留在那裏,因此我看不到地圖片段。刪除一個片段android

任何人都可以幫我嗎?!

以下爲這兩個按鈕的onclick我的代碼:

map_button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      lf= new ListFragment(bean, imgLoader); 
      FragmentTransaction ft = getFragmentManager() 
        .beginTransaction(); 
      ft.remove(lf); 
      //ft.addToBackStack("LIST"); 
      ft.commit(); 

      getFragmentManager().popBackStack(); 

      Log.e("POPBACKSTACK: ", "POPBACKSTACK: "+getFragmentManager().getBackStackEntryCount()); 

     } 
    }); 


    final Button list_view_button = (Button) rootView 
      .findViewById(R.id.list_view_button); 
    list_view_button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      map_button.setClickable(true); 

      Fragment mf = (MapFragment) getFragmentManager().findFragmentById(
        R.id.map); 
      FragmentTransaction ftm = getFragmentManager().beginTransaction(); 
      ftm.remove(mf); 
      ftm.addToBackStack("MAPS"); 
      ftm.commit(); 

      lf = new ListFragment(bean, imgLoader); 
      FragmentTransaction ft = getFragmentManager() 
        .beginTransaction(); 
      ft.replace(R.id.maps_list_container, lf); 
      ft.commit(); 
     } 
    }); 
+1

使用視圖切換的概念你的代碼,這個概念可以幫助你切換你的兩個片段。 – prakash

+0

@prakash非常感謝,我試過視圖切換器,它的作品就像一個魅力! –

回答

0

使用此代碼:

public void removeCurrentFragment() { 
    FragmentTransaction transaction = getSupportFragmentManager() 
      .beginTransaction(); 

    Fragment currentFrag = getSupportFragmentManager().findFragmentById(
      R.id.fragment_container); 

    setFragName("NONE"); 

    if (currentFrag != null) { 
     setFragName(currentFrag.getClass().getSimpleName()); 
    } 

    if (currentFrag != null) { 
     transaction.remove(currentFrag); 
    } 

    transaction.commit(); 

}