【问题标题】:hide existing fragment and load new one on same frame隐藏现有片段并在同一帧上加载新片段
【发布时间】:2015-05-20 23:00:11
【问题描述】:

我使用更改片段视图的一帧,我遇到的问题是当我将添加而不是替换新视图放置在现有视图上时

我只需要替换现有的并放置新的

因为按下后退按钮时我必须重用当前视图,所以不能使用替换

Fragment fragment = null;
            fragment = new DetailFragment2();
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .add(R.id.frame_container2, fragment)
                    .addToBackStack(null).commit();

【问题讨论】:

标签: android android-fragments


【解决方案1】:
FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction transaction;
            transaction = fragmentManager.beginTransaction();
           transaction.replace(R.id.frame_container2,fragment.newIstance());
            transaction.addToBackStack(null);
            transaction.commit();

你需要在 Fragment 类中创建 newIstance:

public static fragment newIstance(){
        fragment frag= new fragment();
        return frag;
    }

【讨论】:

    【解决方案2】:

    如果您不使用支持库(这是您的实际情况),请使用以下代码:

    final FragmentTransaction ft =
                getFragmentManager().beginTransaction();
    ft.replace(R.id.frame_container2, new DetailFragment2());
    ft.commit();
    

    如果有一天您决定使用支持库,那么请改用它(只需将getFragmentManager() 替换为getSupportFragmentManager()):

    final FragmentTransaction ft =
                getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.frame_container2, new DetailFragment2());
    ft.commit();
    

    【讨论】:

    • 我需要的只是用添加替换功能,这听起来可能很奇怪,但我的要求是我有一个从休息调用下载的列表视图,当我点击一个项目时,它正在调用详细活动以及何时我按下它必须返回旧视图
    • 我的答案是hide existing fragment and load new one on same frameall I need is it has to replace the existing and place the new one 的解决方案。所以,在onCreate() 中加载第一个片段。当您单击某个按钮或其他按钮时,将其替换为第二个按钮。在onBackPressed() 中,重新加载 Activity(这反过来又会重新加载第一个 Fragment) - 或者干脆用第一个 Fragment 替换第二个 Fragment。
    • @KlingKlang 如果第二个 Fragment 已被删除,我们又该如何“简单地将第二个 Fragment 替换为第一个 Fragment”,并且重新启动一个网络请求,这一次可能会返回不同的结果?
    • @kaay 你应该有一个方法可以让你根据相同的条件(查询或其他)获得相同的结果。
    • @KlingKlang 这听起来非常非常糟糕的建议。该请求获取最新的帖子或类似的帖子,并且该服务可能不适合我修改以添加这样的功能 - 更不用说......你能想象试图证明这样的变化吗?我已经尝试了 instancestate 包,但是,经过一个小时的样板化,绑定出的机制甚至没有用于 Fragment 替换。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多