首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >片段内的FragmentTransaction

片段内的FragmentTransaction
EN

Stack Overflow用户
提问于 2013-03-19 23:54:25
回答 1查看 7.3K关注 0票数 6

我使用的是jfeinstien10的SlidingMenu。弹出的菜单是一个Fragment。当用户点击一个菜单项时,它会这样做:

代码语言:javascript
复制
FragmentTransaction t = getActivity().getSupportFragmentManager().beginTransaction();
SherlockListFragment mFrag = new ItemsFragment();
t.replace(R.id.main_frag, mFrag);
t.commit();

但是,我听说从另一个Fragment控制Fragment并不是一个好的做法。在这种情况下,这是一种可以接受的方法吗?或者我应该使用父FragmentActivity的回调方法。

如果回调方法是正确的方式,我可以看看它是如何工作的示例吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-20 00:18:48

我建议您将事务留给活动级别,而不是以片段的形式执行事务。为此,在您的活动中定义一个公共方法,然后从您的片段中调用它。例如:

假设您的活动是:

代码语言:javascript
复制
class MainActivity extends Activity{
    ....

    public void replaceFragment(){
        FragmentTransaction t = getSupportFragmentManager().beginTransaction();
        SherlockListFragment mFrag = new ItemsFragment();
        t.replace(R.id.main_frag, mFrag);
        t.commit();
    }

    ....
}

在您的片段中,执行以下调用:

代码语言:javascript
复制
((MainActivity)getActivity()).replaceFragment();
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15504274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档