返回信息流private static Preference.OnPreferenceClickListener passwordClickListener = new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference){
AlertDialog.Builder dialog = new AlertDialog.Builder(SettingsActivity.this);
LayoutInflater inflator = (LayoutInflater)preference.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View passwordDialogView = inflator.inflate(R.layout.password_dialog, null, false);
final EditText pwdEditText = (EditText)passwordDialogView.findViewById(R.id.password_dialog);
final CheckBox pwdCheckBox = (CheckBox)passwordDialogView.findViewById(R.id.password_checkbox);
dialog.setView(passwordDialogView);
dialog.setTitle("@string/pref_PSW");
dialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("取消", null)
.setCancelable(true)
.show();
return true;
}
};
老司机用PreferenceActivity编写了设置界面,用的都是默认风格。现在想修改填写密码的preference,点击密码,会弹出一个对话框,可以输入密码,对话框里还有一个checkbox,勾选之后会隐藏密码(显示成*)。
我的方法是,在密码那里添加一个点击事件,弹出alertDialog,然后显示editText和CheckBox。
现在的代码关于preferenceChange的部分都是static,所以我的preferenceClick也只好用static,但是总出现错误。
AlertDialog.Builder dialog = new AlertDialog.Builder(SettingsActivity.this);报错:No enclosing instance of the type SettingsActivity is accessible in scope
求问怎么改?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #28695同步于 2016/2/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
Android bug
skyhjk
2016/2/22镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
去掉static工作量太大。往static域存储引用是怎么实现的?添加到preference吗,preference是个参数,怎么添加呢
【 在 icyfox 的大作中提到: 】
: static域获得不了一个对象实例很正常,解决办法无非是要不不用static,要不在Activity启动的时候往static域里存一个引用
我记得PreferenceActivity里面弹对话框比较特别,不能按一般的方法来,具体怎么做记不清了。
lz可以参考一下这个
http://stackoverflow.com/questions/10020701/how-to-make-a-preferenceactivity-launch-a-dialog-to-set-a-custom-preference
好的我研究下。PreferenceActivity的好处是代码简洁,但是扩展性差,我能这样理解吗?商用软件一般用什么
【 在 ytinrete 的大作中提到: 】
: 我记得PreferenceActivity里面弹对话框比较特别,不能按一般的方法来,具体怎么做记不清了。
: lz可以参考一下这个
: http://stackoverflow.com/questions/10020701/how-to-make-a-preferenceactivity-launch-a-dialog-to-set-a-custom-preference
像静态Handler那样在初始化的时候存一个弱引用?
【 在 icyfox 的大作中提到: 】
: static域获得不了一个对象实例很正常,解决办法无非是要不不用static,要不在Activity启动的时候往static域里存一个引用
【 在 skyhjk 的大作中提到: 】
: 好的我研究下。PreferenceActivity的好处是代码简洁,但是扩展性差,我能这样理解吗?商用软件一般用什么
唉。我司设置页和普通的activity没什么区别,因为shareperference这东西很多地方用得到所以封装起来了。
反正没有什么一般不一般的说法,看需求来,具体业务具体分析。
有扩展需要就自己写,没有的话就不要过度设计了,否则维护起来也很麻烦。
我想借楼问一下,使用preferenceActivity的优势在哪里。因为通常情况下,界面都是由美工来设计的,即使用了preferenceActivity,也需要对其界面和交互进行大量的自定义设置。这样一来,似乎自己做更直接一些,遇到bug也可以从自己代码里找原因。