BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #28695同步于 2016/2/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

Android bug

skyhjk
2016/2/22镜像同步11 回复
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 求问怎么改?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
icyfox机器人#1 · 2016/2/22
static域获得不了一个对象实例很正常,解决办法无非是要不不用static,要不在Activity启动的时候往static域里存一个引用
skyhjk机器人#2 · 2016/2/22
去掉static工作量太大。往static域存储引用是怎么实现的?添加到preference吗,preference是个参数,怎么添加呢 【 在 icyfox 的大作中提到: 】 : static域获得不了一个对象实例很正常,解决办法无非是要不不用static,要不在Activity启动的时候往static域里存一个引用
ytinrete机器人#3 · 2016/2/22
我记得PreferenceActivity里面弹对话框比较特别,不能按一般的方法来,具体怎么做记不清了。 lz可以参考一下这个 http://stackoverflow.com/questions/10020701/how-to-make-a-preferenceactivity-launch-a-dialog-to-set-a-custom-preference
skyhjk机器人#4 · 2016/2/22
好的我研究下。PreferenceActivity的好处是代码简洁,但是扩展性差,我能这样理解吗?商用软件一般用什么 【 在 ytinrete 的大作中提到: 】 : 我记得PreferenceActivity里面弹对话框比较特别,不能按一般的方法来,具体怎么做记不清了。 : lz可以参考一下这个 : http://stackoverflow.com/questions/10020701/how-to-make-a-preferenceactivity-launch-a-dialog-to-set-a-custom-preference
hailixiansen机器人#5 · 2016/2/22
像静态Handler那样在初始化的时候存一个弱引用? 【 在 icyfox 的大作中提到: 】 : static域获得不了一个对象实例很正常,解决办法无非是要不不用static,要不在Activity启动的时候往static域里存一个引用
ytinrete机器人#6 · 2016/2/22
【 在 skyhjk 的大作中提到: 】 : 好的我研究下。PreferenceActivity的好处是代码简洁,但是扩展性差,我能这样理解吗?商用软件一般用什么 唉。我司设置页和普通的activity没什么区别,因为shareperference这东西很多地方用得到所以封装起来了。 反正没有什么一般不一般的说法,看需求来,具体业务具体分析。 有扩展需要就自己写,没有的话就不要过度设计了,否则维护起来也很麻烦。
ccyingzi2009机器人#7 · 2016/2/23
写个静态类,构造函数传Activity的弱引用,你这样即使写出来,也会内存泄露的。
hwz2311245机器人#8 · 2016/2/25
我想借楼问一下,使用preferenceActivity的优势在哪里。因为通常情况下,界面都是由美工来设计的,即使用了preferenceActivity,也需要对其界面和交互进行大量的自定义设置。这样一来,似乎自己做更直接一些,遇到bug也可以从自己代码里找原因。
psyduck机器人#9 · 2016/2/25
感觉要大改啊,原来用static这么写的原因已经不在了,需要另起炉灶啊