1

我正在创建一个应用程序,用户应该能够在其中添加会议人员。

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

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

list_people片段嵌入到视图中时,单击人员项将list_people片段替换为person_detail片段。此行为已通过主要活动的接口实现。

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

任何帮助将不胜感激。谢谢。

4

1 回答 1

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);
于 2013-07-09T14:45:00.403 回答