【问题标题】:Removing a fragment android删除片段android
【发布时间】:2014-06-11 06:29:53
【问题描述】:

因此,在一个父片段MAPSLIST 中有两个片段。 MAPS 是我的地图片段,LIST 是普通的列表视图。我有两个按钮MAPS_BUTTONLIST_BUTTON。当主片段被加载时,MAPS 片段默认被加载,但是当我点击列表按钮时,LIST 片段被加载到MAPS 所在的位置。我的问题是,每当我在LIST 片段上,并且我点击MAPS_BUTTON 时,LIST 片段不会被删除,它总是留在那里,因此我看不到地图片段。

谁能帮帮我?!

以下是我的两个按钮的 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();
        }
    });

【问题讨论】:

  • 在你的代码中使用视图切换器的概念,这个概念可以帮助你切换你的两个片段。
  • @prakash 非常感谢,我尝试了视图切换器,它就像一个魅力!!!

标签: android google-maps android-fragments maps


【解决方案1】:

使用此代码:

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();

}

【讨论】:

    猜你喜欢
    • 2019-03-17
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多