我正在SharedPreferences通过以下方式访问我的 Android 应用程序
private val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)`
Run Code Online (Sandbox Code Playgroud)
然后尝试使用它从中获取数据
val lat: String = sharedPref.getString("MyKey", "Default")
Run Code Online (Sandbox Code Playgroud)
但是这一行给了我一个错误读数 "Type mismatch. Required String, found String?"
根据文档,getString 方法中的第二个参数表示“如果此首选项不存在,则返回值。此值可能为空。 ”
那么如果该值可以为空,那么拥有默认值有什么意义呢?我似乎无法获得永远使用的默认值,我可以让我的代码工作的唯一方法是使用 elvis 运算符并将我的代码重写为:
val lat: String = sharedPref.getString("MyKey", "Default") ?: "Default"
Run Code Online (Sandbox Code Playgroud)
哪个看起来很丑。我疯了吗?我错过了什么?
我想在jsFiddle中展示纯JavaScript示例,我只需要一个JavaScript窗口和一个控制台.我已经想出如何让控制台窗口出现,但有没有办法删除HTML和CSS窗口?有没有比jsFiddle更好的服务来满足我的需求?
我正在使用Angular和Firebase构建一个网站.我正在使用Angularfire2和AngularFireAuth库以及GoogleAuthProvider(Google)作为我的身份验证提供程序.
这是我的服务代码:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { AngularFireAuth } from 'angularfire2/auth';
import * as firebase from 'firebase/app';
@Injectable()
export class AuthenticationService {
user: Observable<firebase.User>;
constructor(public afAuth: AngularFireAuth) {
this.user = afAuth.authState;
}
login() {
this.afAuth.auth.signInWithPopup(new firebase.auth.GoogleAuthProvider());
}
logout() {
this.afAuth.auth.signOut();
}
}
Run Code Online (Sandbox Code Playgroud)
当用户"退出"我的网站时,它可以正常工作,但似乎可以"缓存"Google身份验证.因此,当他们第二次尝试登录时,我遇到了一些问题:
我究竟做错了什么?有没有办法可以阻止angularfire2/auth缓存这些凭据?有没有办法在用户退出我的网站时将用户退出Google?
firebase angularfire firebase-authentication angularfire2 angular
这是我第一次尝试对 Raspberry Pi 和面包板上的硬件按钮进行编码。程序很简单,当检测到按下按钮时,打开面包板上的 LED 1 秒钟。我的代码似乎有效,但奇怪的是,每隔一个按钮就会触发回调函数两次。我是一个完全的编程菜鸟,所以我不确定问题是否出在我的代码上,或者硬件或按钮是否实际上以某种方式掉落了两次。我希望这里有人能帮助我解决这个奇怪的问题。这是我的代码:
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
LedPin = 11 # pin11 --- led
BtnPin = 12 # pin12 --- button
def setup():
GPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical location
GPIO.setup(LedPin, GPIO.OUT) # Set LedPin's mode is output
GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set BtnPin's mode is input, and pull up to high level(3.3V)
GPIO.output(LedPin, GPIO.HIGH) # Set LedPin high(+3.3V) to off led
def Light(ev=None):
print 'A button press was detected'
GPIO.output(LedPin, 0) …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个简单的Ember应用程序,它从表单中收集信息.我正在使用本教程作为指南.在本教程中,它具有以下代码以从表单中获取信息:
export default Ember.Component.extend({
...
actions: {
saveRental1() {
var params = {
owner: this.get('owner'),
city: this.get('city'),
type: this.get('type'),
image: this.get('image'),
bedrooms: this.get('bedrooms'),
};
...
this.sendAction('saveRental2', params);
}
}
});
Run Code Online (Sandbox Code Playgroud)
这里有一些相关的表单代码:
<div class="form-group">
<label for="image">Image URL</label>
{{input value=image id="image"}}
</div>
<button {{action 'saveRental1'}}>Save</button>
</form>
Run Code Online (Sandbox Code Playgroud)
在我的解决方案中,我无法让它发挥作用.this.get('whatever')总是在我的代码中显示为'undefined'.经过一些调试后,我找到了一个解决方案,但这意味着我将代码更改this.get('city')为this.controller.get('city')
有人可以解释我做错了什么或为什么?使用this.controller是"标准"吗?
我已经开始在我的片段和活动中使用视图绑定。片段的推荐模式是中的null绑定字段onDestroyView()。我还在自定义视图中使用视图绑定。我是否还需要清除该视图绑定字段?我想是这样,但没有onDestroyed()视图功能。有一个View.onDetachedFromWindow()函数,但我不确定这是否是null绑定字段的合适位置。
这是一个合理的担忧吗?如果是,我该如何实现呢?
我正在构建一个单一的活动 Android 应用程序,以尝试遵循 Google 的建议。我正在使用 FirebaseAuth UI 进行身份验证,它显然使用“Smart Lock for Passwords”将凭据保存到您的 Google 帐户中。我的注销功能如下所示:
private fun signOutUser(){
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener {
Timber.i("Sign out completed")
}
sharedViewModel.setUser(null)
}
Run Code Online (Sandbox Code Playgroud)
但是,一旦注销完成,UI 会立即启动用户登录过程,这意味着使用 Smart Lock for Passwords 会弹出一个对话框。这会阻止用户选择另一个帐户。在 FirebaseAuth UI 的 github 帐户中,Google 提到了这个问题说:
“必须指示 Smart Lock for Passwords 禁用自动登录,以防止自动登录循环阻止用户切换帐户。”
他们建议的代码是:
public void onClick(View v) {
if (v.getId() == R.id.sign_out) {
AuthUI.getInstance()
.signOut(this)
.addOnCompleteListener(new OnCompleteListener<Void>() {
public void onComplete(@NonNull Task<Void> task) {
// user is now signed out
startActivity(new Intent(MyActivity.this, SignInActivity.class));
finish();
}
});
} …Run Code Online (Sandbox Code Playgroud) 我正在使用折叠工具栏,折叠时它看起来像这样......
我一直在试图弄清楚如何控制左边距,在图中用黄色标记。这里有些人建议我使用,app:contentInsetStart="0dp"但这对我没有任何作用。有人有线索吗?我已经尝试了几乎所有东西,在工具栏、CollapsingToolbar 和 AppBarLayout 上。
android ×3
firebase ×2
android-collapsingtoolbarlayout ×1
angular ×1
angularfire ×1
angularfire2 ×1
ember-data ×1
ember.js ×1
forms ×1
gpio ×1
javascript ×1
jsfiddle ×1
kotlin ×1
python ×1
raspberry-pi ×1