现在我有几个按钮在点击时会做不同的事情,但现在我希望其中一个在点击时显示一个菜单,但我不知道如何做到这一点。
我的主要按钮的代码是这样的:
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()) {
case R.id.button1:
//do stuff
break;
case R.id.button2:
//display menu
break;
}
Run Code Online (Sandbox Code Playgroud)
如果按下 button2,我想显示一个选项列表并查看用户选择的菜单项,但我该怎么做?
在菜单 XML 中显示图标
<item
android:id="@+id/item_1"
android:icon="@drawable/settings"
android:showAsAction="always"
android:title="Add item1" />
Run Code Online (Sandbox Code Playgroud) 我试图修改用户输入,如果他们输入不正确的日期格式(YYYY-MM-DD),但我无法弄明白.这是我有的:
while [ "$startDate" != "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" ]
do
echo "Please retype the start date (YYYY-MM-DD):"
read startDate
done
Run Code Online (Sandbox Code Playgroud) 在线阅读了一些帖子和文章之后,似乎大多数(如果不是全部)人们都建议使用某种哈希算法来保证用户的密码安全,因为你不能解开它,这很好,但这就是我开始有一个我的情况有问题.
现在我处于修改用户密码保护方式的早期阶段.我们目前使用Sha512将散列密码存储在MySQL数据库中.根据我目前的理解,虽然哈希可能是安全的,因为它们不能反转(或者至少不那么容易),但是由于哈希具有固定长度而不管大小如何,因此也存在不安全性.原始输入,限制可能的哈希数,导致可能的Pidgeon Hole问题.
现在又出现了另一个我遇到问题的部分,特别是对我的情况.
我正在尝试为用户的密码添加一些功能,如果用户的密码与他们的最后三个密码太相似,则用户无法输入新密码.例如:如果他们的最后一个密码是password1234新密码xxxpasswordxxx,那么它就会失败.但是,根据我的理解,我无法添加此功能,因为我无法取消以前的密码来检查旧密码中的子字符串是否在新密码中.这将我带到整个加密/解密部分.
我一直在使用CBC加密模式查看AES 128,它似乎是一个可靠的选择,因为我并不太关心加密部分的并行化.另外,通过使用加密路径而不是散列路径,我实际上可以检查它们的最后三个密码是否与它们当前的密码相似!但是,存在的问题是首先能够看到用户的纯文本密码.
另外,我一直试图想办法为每个密码使用唯一密钥而不将其存储在我们的数据库中,因为我觉得这太不安全了.我可以使用静态随机密钥来输入所有密码,但我不确定这是不是一个好主意,即使我对所有密码使用唯一的IV.
总而言之,我的情况是:我希望能够阻止用户输入类似于旧密码的密码,此外还能真正提高密码存储的安全性.根据我目前的知识,我可以继续将密码存储为哈希,但我无法进行类似的密码检查或者我可以加密密码,这是不赞成的.
我显然不是这方面的专家,我知道我需要做更多的研究,但我想确保我开始朝着正确的方向前进.