弹出一个保存文件的对话框,要控制输入内容限制,同时内容为空时保存按钮不可用。

原文地址请保留http://www.cnblogs.com/rossoneri/p/4140184.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);
}
});

[Android] 设置AlertDialog中按钮的可用(Enable)状态的更多相关文章

  1. css中按钮的四种状态

    css中按钮有四种状态 1. 普通状态2. hover 鼠标悬停状态3. active 点击状态4. focus 取得焦点状态 .btn:focus{outline:0;} 可以去除按钮或a标签点击后 ...

  2. (原)android的alertdialog中加入edittext但是不弹出软键盘等问题的解决与原因

    摘要:alertdialog中加入edittext但是不弹出软键盘等问题网上有很多不管用的解决方案, 本文意在给出更有效的解决办法,并初步探究其原因 正文 在对话框中插入文本框是十分常见的需求 通常我 ...

  3. Android 关于ListView中按钮监听的优化问题(方法一)

    在Android应用开发过程中经常会用到ListView,并且每次在item中都要对点击事件进行监听.在给按钮添加OnClickListener时,一般会下意识的在getView()中找到每一个But ...

  4. Android 关于ListView中按钮监听的优化问题(方法二)

    关于ListView中按钮监听的优化问题(方法一)地址: http://www.cnblogs.com/steffen/p/3951901.html 之前的方法一,虽然能够解决position的传递, ...

  5. Android设置AlertDialog点击按钮对话框不关闭(转)

    (转自:http://blog.csdn.net/winson_jason/article/details/8485524) 当我们在用到Android alertDialog创建对话框 的时候,我们 ...

  6. [Android] 设置AlertDialog打开后不消失

    最近项目收尾,一堆bug要改,还要对用户操作体验做一些优化,也是忙的不行.周末难得清闲,出去逛逛,看看风景,还好因为习大大要来,南京最近的天气还不错,只是苦了当地的不少农民工,无活可干,无钱可拿.想想 ...

  7. 【MFC】CDialogBar中按钮不可用

    现象展示: 具体原因: A button in a CDialogBar object is disabled automatically if the command routing does no ...

  8. android 设置textview中划线效果

    textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线   textView.getPaint().setAntiAlias( ...

  9. Android 设置AlertDialog的大小 .

    AlertDialog dialog = builder.setTitle("消息列表") .setView(layout) .create(); dialog.show(); / ...

随机推荐

  1. 人脸检测第一文---A Dream of Spring

    人脸识别研究的人很多,可是,真正具有划时代意义的还要当属Paul Viola的一篇文章<RobustReal-time Object Detection>.这篇文章让 人脸识别在实际应用中 ...

  2. 【LeetCode】7. 整数反转python3

    题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1:输入: 123 输出: 321  示例 2:输入: -123 输出: -321 示例 3:输入: 120 输出 ...

  3. xshell 会话管理器快捷键

    有没有发现xshell6关闭左边的会话管理器以后,打开就比较麻烦 那么可以自定义一个快捷键来打开: 然后输入一个快捷键 类型选择 菜单-->然后找会话管理器 完事儿 也可以自定义其他快捷键.自己 ...

  4. js实现深拷贝的一些方法

    在ECMAScript变量中包含两种不同类型的值:基本类型值和引用类型值. 基本类型值:Undefined.Null.Boolean.Number.String 引用类型值:Object.Array. ...

  5. java对文件的检索

    先说下思路吧. 1.先把xls等文件转换为静态html文件:可以用很多插件,类似我的博客地址: http://www.cnblogs.com/Alandre/p/3221006.html 2.再对转的 ...

  6. 用node.js写一个jenkins发版脚本

    背景 每次到网页里手动发版有点烦,写个脚本来提高开发效率. CFG 在 jenkins 设置里获取 API TOKEN. 把 host 和账号密码拼接起来就可以通过鉴权. const token = ...

  7. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十二):解决跨域问题

    什么是跨域? 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 如果一个请求地址里面的协议.域名和端口号都相同,就属于同源. ...

  8. nginx介绍(五) - 高可用

    前言 即便想 nginx 这么牛B的服务器, 也不能保证他不挂啊, 就算不是机器出故障, 比如, 停电了, 那么机器挂了, 很正常啊. 这时候, 没有分发服务器, 网站就不能正常访问了, 咋搞? 网站 ...

  9. 四、windows下TortoiseGit的使用与操作

    使用 Git命令有时候确实不怎么方便,特别是每次都要输入密码,如果配置 SSH 的方式,又实在是很麻烦.(当然,必须使用 Windows 神器才有方便友好的客户端图形界面啦!!!) 关于 Tortoi ...

  10. [Luogu 3787] 冰精冻西瓜

    Description 琪露诺是拥有操纵冷气程度的能力的妖精,一天她发现了一片西瓜地.这里有n个西瓜,由n-1条西瓜蔓连接,形成一个有根树,琪露诺想要把它们冷冻起来慢慢吃. 这些西瓜蔓具有神奇的性质, ...