在ListFragment和Fragment之间导航

时间:2015-11-15 22:36:30

标签: java android listview android-fragments fragment

我的学校作业有一个包含ListFragment和Fragment的活动。 MainActivity创建ListFragment,然后列表中的每个项目都应该打开包含图片的常规Fragment,然后当我点击图片时它应该返回到ListFragment。

在所有情况下,我都使用此代码调用片段(当然针对具体情况进行了编辑):

    Fragment fragTwo = new FragmentTwo();

    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.fragment_place, fragTwo);
    ft.addToBackStack(null);
    ft.commit();

它调用片段OK,除了第二个片段将出现在ListFragment上,我仍然可以在第二个片段打开时从列表中选择内容。每次导航时是否需要创建新的片段对象?如何从它自己的onclick监听器中禁用/启用片段?

main_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<fragment
    android:name="com.example.w0068332.fragmentstest.FragmentOne"
    android:id="@+id/fragment_place"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

1-是的,您需要为每个项目创建一个片段。

                    Bundle arguments = new Bundle();
                    arguments.putInt(FragmentTwo.ARG_ITEM_ID,R.drawable_pic);
                    FragmentTwo fragment = new FragmentTwo();
                    fragment.setArguments(arguments);
                    getSupportFragmentManager().beginTransaction()
                            .replace(R.id.item_detail_container, fragment)
                            .commit();

我想你是从资源中显示图片

2-在显示第二个时禁用ListFragment中的选择。 在第二个片段的父布局中,您必须添加背景并使其可单击,如下所示:

android:background="@color/white"
android:clickable="true"

3-要导航回ListFragment,请为ImageView和onClick调用onBackPressed为Activity添加一个点击监听器:

getActivity().onBackPressed();

您还可以查看Android工作室的模板,了解Master和详细信息活动 enter image description here