我正在使用PreferenceActivity为我的应用程序显示一些设置.我通过xml文件膨胀设置,以便我的onCreate(和完整的类方法)如下所示:
public class FooActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.preference);
}
}
Run Code Online (Sandbox Code Playgroud)
PreferenceActivity PreferenceFragment的javadoc 说明了这一点
当用户与它们交互时,这些首选项将自动保存到SharedPreferences.要检索此活动中的首选项层次结构将使用的SharedPreferences实例,请使用与此活动相同的包中的上下文调用getDefaultSharedPreferences(android.content.Context).
但是我如何在另一个Activity中获得SharedPreference的名称?我只能打电话
getSharedPreferences(name, mode)
Run Code Online (Sandbox Code Playgroud)
在其他活动中但我需要PreferenceActivity使用的SharedPreference的名称.名称是什么或如何检索它?
我正在创建一个使用用户名/密码连接到服务器的应用程序,我想启用"保存密码"选项,这样用户每次启动应用程序时都不必输入密码.
我试图使用共享偏好设置,但不确定这是否是最佳解决方案.
我将不胜感激任何有关如何在Android应用程序中存储用户值/设置的建议.
我有一些首选项,您可以启用/禁用菜单上显示的项目.共有17项.我在values/arrays.xml中创建了一个字符串数组,其中包含17个项目中的每个项目的标题.
我有preferences.xml,它有我的首选项文件的布局,我想引用字符串数组中的单个项目作为标题.
我怎样才能做到这一点?
在Android开发人员参考中,我看到我如何使用XML引用单个字符串,但不知道如何使用XML引用数组资源中的字符串.
在我的工作中,我需要按照家庭风格进行缩进,如下所示:
为每种文件类型指定不同的空白首选项的最佳方法是什么?
我有一个扩展PreferenceActivity的活动.我正在从xml文件加载首选项.但在某些情况下,我需要根据我的应用状态完全隐藏屏幕中的一个偏好设置.有一个setEnabled方法,但它不是我想要的.我想完全从屏幕上删除该首选项.可能吗 ?
我将使用oAuth从谷歌获取邮件和联系人.我不想每次都要求用户登录以获取访问令牌和密码.根据我的理解,我需要将它们与我的应用程序一起存储在数据库中SharedPreferences.但我有点担心安全问题.我读过你可以加密和解密令牌,但是攻击者很容易反编译你的apk和类并获得加密密钥.
在Android中安全存储这些令牌的最佳方法是什么?
我正在使用PreferenceActivity让用户设置一些值.我正在使用定义的首选项为xml文件提供它.
我android:defaultValue=""为他们设置了全部.
当我启动我的应用程序时,我需要首选项,或者如果它们尚未手动设置,我想要默认值:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean value = prefs.getBoolean("key"), false);
Run Code Online (Sandbox Code Playgroud)
但是,当android:defaultValue="true"我还是得到的时候false.因此,看起来XML中设置的defaultValues不会在初始化首选项屏幕时使用.
我不想硬编码方法中的默认值getBoolean().那么,有没有办法获得默认值,只在一个地方定义这些?
Vim非常适应标签Vs. 空间偏好.据我了解,该tabstop设置表示制表符的宽度.该shiftwidth设置指定使用<<和>>命令时递增/递减的列数,而softtabstop设置会影响Tab在插入模式下按键时要插入的空白量.如果expandtab启用,则Tab键会插入softtabstop空格字符数.而用expandtab切断时,按下Tab键会插入的最小可能数目的匹配标签+空格字符softtabstop.(如果我错了,请纠正我.)
最后一点让我想知道:有一个你不想要的实际案例shiftwidth == tabstop && tabstop == softtabstop吗?我想不出一个.就我而言,如果我可以在一个单独的任务中将所有这三个设置为相同的值,那将是最方便的.例如:
:set stab=4
Run Code Online (Sandbox Code Playgroud)
这相当于运行:
:set tabstop=4 softtabstop=4 shiftwidth=4
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何做到这一点?
感谢迄今为止对php,hobbs和kaiser.se的回复.我不是单独回复每个人,而是在这里更新问题.
我在上面说过,关闭expandtab后,按Tab键会插入尽可能少的匹配的tab +空格字符softtabstop.我支持这一点,但我认为我需要解释我的意思.我将通过几个例子尝试这样做.要继续,请运行:set list以便您可以看到制表符.
tabstop=4 softtabstop=2 shiftwidth=4 noexpandtab
在插入模式下,按Tab键可插入2个空格字符.按tab键的第二时间,并且代替插入2个更多的空间字符(总共4个空格字符)它替换先前的2位具有单个制表符.Tabstop设置为4,因此单个制表符的宽度与4个空格的宽度相同.
tabstop=4 softtabstop=6 shiftwidth=4 noexpandtab
在插入模式下,按Tab键可插入1个制表符加2个空格.制表符的宽度为4,因此总宽度为6,这是使用3个字符实现的.再次按Tab键可插入两个制表符,并删除先前插入的两个空格.总宽度为12,使用3个字符即可实现.
在这两个示例中,Vim都插入了与softtabstop匹配的最小可能数量的制表符+空格字符.
如果我正在使用expandtab关闭,我看不到自己想要通过将softtabstop设置为与tabstop不同的值来实现额外的粒度控制.它仍然将是有益的我能够设置tabstop,softtabstop并shiftwidth用一个命令相同的值.
tabstop=4 softtabstop=0 shiftwidth=4 …
我的程序将加密的产品密钥数据保存到具有java.util.Preferences类的计算机(系统首选项,而不是用户).问题是,在Windows和Linux上(尚未在OSX上测试,但它可能是相同的),如果我不使用sudo或具有管理员权限运行程序,它会在尝试读取时发出异常或警告或保存数据.
显然要求用户使用Admin权限运行程序是不切实际的.最理想的是,我希望操作系统向用户请求许可.
这是非常愚蠢的,并且消除了一半的目的Preferences.怎么解决这个问题?
以下是我需要的摘要:我需要我的程序来请求操作系统的许可以保存系统设置.
当我尝试读取节点时(因为节点不存在),这是错误:
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences <init>
WARNING: Could not create windows registry node Software\JavaSoft\Prefs\myapp at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences WindowsRegOpenKey1
WARNING: Trying to recreate Windows registry node Software\JavaSoft\Prefs\myapp at root 0x80000002.
Mar 18, 2011 9:41:15 AM java.util.prefs.WindowsPreferences openKey
WARNING: Could not open windows registry node Software\JavaSoft\Prefs\myapp at root 0x80000002. Windows RegOpenKey(...) returned error code 2.
Mar …Run Code Online (Sandbox Code Playgroud) 是否有与之完全相反的XML属性android:dependency?
我希望在检查另一个未选中时禁用其他依赖首选项并禁用它.
编辑:也许问题不在于android:dependency可能有一个xml属性,我可以添加,以使该偏好设置的默认值被禁用,然后android:dependency将按照我想要的相反方式切换它.
再次编辑:我尝试android:enabled="false"在首选项中进行设置,它会像我想要的那样禁用它,但即使它依赖于其他首选项它也没有像我希望的那样启用它
preferences ×10
android ×7
java ×3
vim ×2
whitespace ×2
xml ×2
arrays ×1
credentials ×1
default ×1
dependencies ×1
encryption ×1
oauth ×1
reference ×1
security ×1
token ×1