java - 使用 NexusDialog 在 fragment 中创建自定义元素

标签 java android android-fragments

我想使用 nexusDialog 库通过 fragment 创建自定义元素 ( https://github.com/dkharrat/NexusDialog ) 我使用开发人员给出的示例创建了一个自定义元素 但我不知道如何在 fragment 而不是 Activity 中生成这些自定义组件。我想将数据传递到编辑文本中,并使用库将 edittext 的值获取到 fragment

这是我的代码

自定义组件

public class EditTextComp extends FormElementController {

    EditText editText = null;

    TextView textView = null;

    public EditTextComp(Context context) {
        super(context, null);

    }


    @Override
    protected View createView() {
        return createComponent();
    }

    @Override
    public void refresh() {

    }

    @Override
    public void setError(String message) {

    }




    private View createComponent() {

        LayoutInflater inflater = LayoutInflater.from(getContext());
        return inflater.inflate(R.layout.compound_comp_edit_text, null);

    }

    public EditText getEditText() {
        return (EditText) getView().findViewById(R.id.editText);
    }

}

最佳答案

我能够使用库的FormFragment来做到这一点,我就是这样做的

子 fragment

public  class fragmentFragment extends FormFragment {
    public static final String FIRST_NAME = "firstName";
    public static final String LAST_NAME = "lastName";
    public static final String GENDER = "gender";
    public static final String HOBBIES = "hobbies";

    public boolean validate() {
        getFormController().resetValidationErrors();
        if (getFormController().isValidInput()) {
            Object firstName = getModel().getValue(FIRST_NAME);
            Object lastName = getModel().getValue(LAST_NAME);
            Object gender = getModel().getValue(GENDER);
            Object favColor = getModel().getValue(HOBBIES);

            String msg = "First name: " + firstName + "\n"
                    + "Last name: " + lastName + "\n"
                    + "Gender: " + gender + "\n"
                    + "Hobbies: " + favColor + "\n";
            MessageUtil.showAlertMessage("Field Values", msg, getActivity());
        } else {
            getFormController().showValidationErrors();
        }
        return true;
    }


    @Override
    public void initForm(FormController controller) {
        Context ctxt = getContext();
        FormSectionController section = new FormSectionController(ctxt, "Personal Info");
        section.addElement(new EditTextController(ctxt, FIRST_NAME, "First name"));
        section.addElement(new EditTextController(ctxt, LAST_NAME, "Last name"));


        controller.addSection(section);
    }
}

父 fragment

  btn= view.findViewById(R.id.btn_in_xml);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                FragmentManager fm = getFragmentManager() ;
                fragmentFragment formFragment;

                Fragment retainedFragment = fm.findFragmentByTag(FORM_FRAGMENT_KEY);
                if (retainedFragment != null && retainedFragment instanceof childFragment) {
                    formFragment = (childFragment) retainedFragment;
                } else {
                    formFragment = new childFragment();
                    fm.beginTransaction()
                            .replace(R.id.flContent, formFragment, FORM_FRAGMENT_KEY)
                            .commit();
                }


            }
        });

关于java - 使用 NexusDialog 在 fragment 中创建自定义元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48058844/

相关文章:

java - 如何使用 Guice 注入(inject) Provider

android - 为每个抽屉导航 fragment 替换工具栏

java - 用户 session 在 20 分钟后关闭

java - 将实体对象传递到 JFrame

android - 如何将 IplImage* 转换为 cv :Mat*?

android - Eclipse Git 错误 : Error occurred computing diffs

android - 如何将 gradle 配置为仅将 logback-classic 用于 Android 中的单元测试?

android - 如何从 Activity 初始化 fragment ?

Android PreferenceFragment 找不到 fragment ID 的 View

java - 如何在运行时设置Artifact Path