单击对话框后不显示但只会使屏幕变暗

时间:2016-04-15 17:29:26

标签: android dialog

点击对话框后没有显示但只会使屏幕变暗。这很奇怪,但我不知道会发生什么。

这是我的方法,它应该在我的片段类中显示对话框。 :

public void helloType(String id, String name) {
    AddHelloDialog dialog = AddHelloDialog.newInstance(id, name);
    dialog.show(getChildFragmentManager(), "Add hello");
}

这是我的AddHelloDialog类:

public class AddHelloDialog extends DialogFragment {
    public static String HELLO_TYPE = null;
    private static String mName;
    private static String mId;

    BusManager mBusManager;

    public static AddHelloDialog newInstance(String id, String name) {
        AddHelloDialog dialog = new AddHelloDialog();
        mId = id;
        mName = name;
        return dialog;
    }

    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_add_hello, null, false);
        ButterKnife.bind(this, v);
        mBusManager = BusManager.get();

        if (getArguments() != null)
            builder.setTitle(R.string.hello_dialog_title)
                .setCancelable(true)
                .setView(v)
                .setNegativeButton(R.string.picture_dialog_cancel, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dismiss();
                    }
                });
        return builder.create();
    }

    @OnClick(R.id.hello1)
    public void onHello1Click() {
        HELLO_TYPE = "1";
        addUserToNamedList();
        dismiss();
    }

    public void addUserToNamedList() {
        //API connection
    }
}

为什么?你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您正在创建自定义对话框,在展开布局期间传递viewgroup引用null。

LayoutInflater.from(getActivity()).inflate(R.layout.dialog_add_hello, null, false);

因此,您的布局无法附加父视图。

在onCreateView(...)

中充气您的自定义布局
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.dialog_add_hello, container);
    }

获取视图的id并在onViewCreated(...)方法中注册click lister

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        // for example
        mEditText = (EditText) view.findViewById(R.id.txt_your_name);


    }

详细示例https://github.com/codepath/android_guides/wiki/Using-DialogFragment

http://developer.android.com/reference/android/app/DialogFragment.html