点击对话框后没有显示但只会使屏幕变暗。这很奇怪,但我不知道会发生什么。
这是我的方法,它应该在我的片段类中显示对话框。 :
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
}
}
为什么?你有什么想法吗?
答案 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