我想检查SharedPreferences中的字符串,用它来存储用户名和密码,所以如果用户名和密码不为空或空,它将被定向到home,否则如果用户名和密码为空,它将被定向到登录页面.
这是我检查SharedPreferences字符串的代码,但它不起作用..
if(PreferenceConnector.USERNAME!=null){
Intent intent = new Intent(MainActivity.this,MainHome_Activity.class);
startActivity(intent);
} else {
Intent intent = new Intent(MainActivity.this,LoginFormPegawai_Activity.class);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
我尝试通过这个代码的吐司检查它,并在我尝试这个之后,我得到SharedPreferences字符串不为null或空..
btn_logout_pegawai.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//remove the SharedPreferences string
PreferenceConnector.getEditor(this).remove(PreferenceConnector.USERNAME)
.commit();
PreferenceConnector.getEditor(this).remove(PreferenceConnector.PASSWORD)
.commit();
//checking the SharedPreferences string
if(PreferenceConnector.USERNAME!=null){
Toast.makeText(MainHome_Activity.this,"not null", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(MainHome_Activity.this,"null", Toast.LENGTH_SHORT).show();
}
}
});
Run Code Online (Sandbox Code Playgroud)
如何正确检查SharedPreferences字符串是空还是空?
谢谢..
我是Angular的新手,无法根据REGEX获取ng-pattern来验证电子邮件地址.实际上,电子邮件的其他默认角度验证也会更改行为,并且如果在插入ng-pattern时整个字段为空,则仅显示错误.最初尝试使用指令和控制器,但发现ng-pattern可以实现(理论上)验证电子邮件的相同效果,因此决定使用它.
我已经使用了几种REGEX模式并阅读了关于ng-pattern的内容,例如:来自ng-pattern 表单验证的正则表达式验证简单表单验证和许多其他链接但没有任何作用.任何人都可以弄清楚我需要做些什么才能让事情发挥作用?
<form name="userForm" novalidate>
<div class="row">
<div class="large-12 medium-12 small-12 columns">
<label>Username</label>
<input type="email" name="username" placeholder="johnsmith@ashburton.com" ng-model="user.username" ng-maxlength="100" ng-model-options="{ updateOn: blur }" ng-pattern = "/^(?("")("".+?(?<!\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'*\+/=\?\^`\{\}\|~\w])*)(???<=[0-9a-z])@))(?([)([(\d{1,3}\.){3}\d{1,3}])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-??z0-9][\-a-z0-9]{0,22}[a-z0-9]))$/" required />
<div class="error-container" ng-show="userForm.username.$dirty && userForm.username.$invalid">
<small class="error" ng-show="userForm.username.$error.required">
Your email is required.
</small>
<small class="error" ng-show="userForm.username.$error.email">
Please input a valid email.
</small>
<small class="error" ng-show="userForm.firstname.$error.maxlength">
Your email cannot be longer than 100 characters
</small>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud) 我添加了一个脚本,该脚本使用ES6扩展运算符到从url获取params的项目.在我发现项目不支持ES6之后,不确定如何将其恢复为正常的vanilla Javascript语法.
使用普通的Javascript数组并使用扩展运算符很容易,但在像这样的更复杂的实例中,我无法使数组在不完全更改脚本的情况下返回结果.
getQueryURLParams("country");
getQueryURLParams = function(pName) {
var urlObject = location.search
.slice(1)
.split('&')
.map(p => p.split('='))
.reduce((obj, pair) => {
const [key, value] = pair.map(decodeURIComponent);
return ({ ...obj, [key]: value }) //This is the section that needs to be Vanilla Javascript
}, {});
return urlObject[pName];
};
Run Code Online (Sandbox Code Playgroud)
感谢大家的回复.在来回之后,我意识到我将整个脚本转换为ES5的建议是正确的,因为浏览器只抱怨该行,但其他项目不是ES5也是有问题的.
这是我使用ES5后的情况:
getQueryURLParams = function(pName) {
if (typeof Object.assign != 'function') {
// Must be writable: true, enumerable: false, configurable: true
Object.defineProperty(Object, "assign", {
value: function assign(target, varArgs) { // .length of function …Run Code Online (Sandbox Code Playgroud) javascript arrays ecmascript-6 spread-syntax ecmascript-2018
android ×1
angularjs ×1
arrays ×1
ecmascript-6 ×1
forms ×1
javascript ×1
ng-pattern ×1
validation ×1