您的位置:首页 > 移动开发 > Android开发

[Android] 设置AlertDialog中按钮的可用(Enable)状态

2014-12-03 15:17 330 查看
弹出一个保存文件的对话框,要控制输入内容限制,同时内容为空时保存按钮不可用。

原文地址请保留/article/5262220.html

直接上代码:

LayoutInflater mInflater = LayoutInflater.from(mActivity);
View saveView = mInflater.inflate(R.layout.alert_dlg_save, null);
// 设置输入文件名的EditText属性
final EditText filename = (EditText) saveView.findViewById(R.id.dlg_save_input_filename);
filename.setFilters(new InputFilter[] {new InputFilter.LengthFilter(255), new SpecialFilter() });
filename.setText(mStrAsName);

TextView defaultPath = (TextView) saveView.findViewById(R.id.dlg_save_default_path);
defaultPath.setText(DataStruct.gFloder + "/");

AlertDialog.Builder builder = new AlertDialog.Builder(mActivity, AlertDialog.THEME_HOLO_LIGHT);
builder.setTitle(R.string.maker_menu_save);
builder.setIcon(R.drawable.icon_small);
builder.setView(saveView);
builder.setPositiveButton(R.string.maker_menu_save,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,int which) {
// TODO Auto-generated method stub
String name = filename.getText().toString().trim();

name += ".astp";
String namePath = DataStruct.gFloder + "/" + name;
if (saveFile(namePath)) {
mStrSavedPath = namePath;
mBtnSave.setEnabled(false);
} else {
ToastFailedSave();
}
}
});
builder.setNegativeButton(R.string.btn_cancel,
new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog,int which) {
// TODO Auto-generated method stub

}
});

Dialog dialog = builder.create();
dialog.show();  //show()放在 监听文字改变事件之后会报错
// 获取PositiveButton 重点在这里
final Button btn = ((AlertDialog) dialog).getButton(DialogInterface.BUTTON_POSITIVE);
// 输入不能为空
filename.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start,int before, int count) {
// TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start,int count, int after) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
String name = s.toString().trim();
if (name.isEmpty())
btn.setEnabled(false);
else
btn.setEnabled(true);
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐