【发布时间】:2014-01-31 15:59:52
【问题描述】:
我模仿了我认为相当标准的Dialog 代码:
public class DChooseSeparator extends DialogFragment
{
// ...
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
builder
.setTitle("My Title")
.setView(myDialogLayout)
.setPositiveButton(getString(R.string.sOKButton), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
if(myEditText.getText().toString().equals("")) // disable positive button if this is empty
{
Toast.makeText(getActivity(), "enter something!", Toast.LENGTH_SHORT).show();
}
else { myListener.onSet(myEditText.getText().toString()); }
}
})
.setNegativeButton(getString(R.string.sCancelButton), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do nothing
}
});
return builder.create();
}
}
在onStart 中显示它的Fragment:
sepButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
MyDialog myDialog = new MyDialog();
myDialog.show(getFragmentManager(), "tMyDialogTag");
myDialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false); // DOES NOT WORK
}
}
但是,这不起作用,因为getButton 功能不适用于我的DialogFragment。我也不能在DialogFragment 类中执行此操作,因为我需要先show()。
那么...我究竟可以/应该在哪里禁用Button?我真的必须将Dialog 的整个创建移到onClick 方法吗?
提前感谢您的帮助。
【问题讨论】:
标签: android android-fragments android-dialog android-dialogfragment