检查片段是否显示为对话框以更改单击侦听器行为

时间:2013-07-07 16:53:34

标签: android onclick android-dialogfragment

我正在创建一个应用,用户应该可以为会议添加人员。

该结构由在同一活动(list_people, person_detail, create_meeting)中管理的几个片段组成。

我想将显示人员列表的片段重用为create_meeting片段中的对话框。并通过单击人员项目将人员添加到会议中。

list_people片段嵌入视图中时,点击某个人物品会将list_people片段替换为person_detail片段。已经使用主活动的接口实现了此行为。

我正在寻找一种解决方案来改变点击监听器的行为,无论list_people片段是显示为嵌入片段还是对话框。关于我如何做到这一点的任何想法?

非常感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案。它是使用构造函数(newInstance)作为可以传递变量的片段。

public class ListPeopleFragment extends Fragment {

public static ListPeopleFragment newInstance(boolean nested){
    ListPeopleFragment f = new ListPeopleFragment();

    Bundle args = new Bundle();
    args.putBoolean("nested", nested);
    f.setArguments(args);

    return f;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
    View view = inflater.inflate(R.layout.fragment_list_people, container, false);

    boolean nested = false;
    Bundle arguments = getArguments();
    if (arguments != null)
    {
        nested = getArguments().getBoolean("nested");
    } 

    displayListViewPeople(view, nested);

    return view;
}
}

displayListViewPeople根据nested的值设置点击监听器。

以这种方式实例化片段:

ListPeopleFragment nestedFrag = ListPeopleFragment.newInstance(true);