我遇到了问题,我对如何实现以下结构感到困惑:
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类片段活动,这导致了一个问题。需要一个解决方案,因为我在这方面陷入了困境。
答案 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。我认为这应该运作良好。