如何动态交换ViewPager的片段?

时间:2015-04-14 05:03:00

标签: android android-fragments replace android-viewpager swap

这是一个很长的问题,但我还没有找到有效的答案。我使用ViewPager来显示三个选项卡(单独的片段)。我的目标是在主选项卡(位置1)上,当我按下按钮时,按钮应该消失,并且应该在按钮曾经存在的位置填充包含ListView的 NEW 片段。

就像现在一样,正在与之交互的片段在按钮上有一个点击监听器:

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onButtonPressed();
        }
    });

然后调用

public void onButtonPressed() {
    if (mListener != null) {
        mListener.onFragmentInteraction();
    }
}

导致

public interface OnFragmentInteractionListener {
    public void onFragmentInteraction();
}

托管标签的活动和一切实现ButtonFragment.OnFragmentInteractionListener

/**
 * Handle fragment interaction and replacement
 */
@Override
public void onFragmentInteraction() {
    XFragment fragment = new XFragment();

    FragmentTransaction transaction = getFragmentManager().beginTransaction();
    transaction.replace(R.id.button_layout_container, fragment);
    transaction.addToBackStack(null);
    transaction.commit();
}

我要替换的容器在XML中定义为

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:id="@+id/button_layout_container"
         android:padding="10dp">

<ToggleButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:layout_gravity="center"/>

</FrameLayout>

正在被定义为

的布局取代
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                       xmlns:tools="http://schemas.android.com/tools"
                       android:layout_width="match_parent"
                       android:layout_height="match_parent"
                       android:id="@+id/buddies_layout_container"
                       android:padding="10dp">

<ListView
android:id="@+id/list_view_buddies"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</FrameLayout>

原样,正在发生的是好友列表出现但按钮仍在那里而且无法点击。我按下硬件后退按钮,列表就会消失,按钮可以点击。 但是如何让列表片段完全取代按钮?

0 个答案:

没有答案