从活动中删除/替换片段

时间:2014-01-27 08:40:21

标签: android android-fragments android-activity

我遇到了问题,我对如何实现以下结构感到困惑:

class A extends FragmentActivity{
   //In this I click a button which loads a fragment say class B
}

class B extends Fragment implments Interface{
    //This has a button which opens up an activity of list view say class C

  function replaceFragment(){
      try{
        FragmentManager fm = B.this.getFragmentManager();
        fm.beginTransaction().replace(R.id.main_frame, new D()).commit();
    }catch(Exception e){
        Log.v("error",""+e.getMessage());
    }
  }
}

class C extends Activity{
   //It has an async task which loads something when the list view is clicked
  //The async task onPostExecute calls back the class B interface function

  onPostExecute(){
    callback.replaceFragment();
  }
}

现在,当调用接口函数时,我想用另一个片段替换片段B,例如D,它有自己的布局。任何人都可以帮我提出这个建议或解决我遇到的问题吗?

我认为的另一种方法是调用回调函数,而不是再次启动A类,并在加载时将片段更改为D,但是之后的A类没有从堆栈中删除,当我按下时我再次得到A类片段活动,这导致了一个问题。需要一个解决方案,因为我在这方面陷入了困境。

2 个答案:

答案 0 :(得分:0)

调用界面功能时,您可以将现有Fragment替换为Fragment D,如下所示

Fragment d = new D();
fragmentManager.beginTransaction().replace(R.id.frame_container, d).commit();

R.id.frame_container1是您添加/替换片段的FrameLayout的ID

答案 1 :(得分:0)

您可以尝试在界面回调中调用replace。我认为这应该运作良好。