这是一个很长的问题,但我还没有找到有效的答案。我使用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>
原样,正在发生的是好友列表出现但按钮仍在那里而且无法点击。我按下硬件后退按钮,列表就会消失,按钮可以点击。 但是如何让列表片段完全取代按钮?