所以这是我的Java代码
if (currentForecastJava.getCurrentObservation().getTempF() >= 60) {
mCurrentWeatherBox.setBackgroundColor(getResources().getColor(R.color.weather_warm));
mToolbar.setBackgroundColor(getResources().getColor(R.color.weather_warm));
} else {
mCurrentWeatherBox.setBackgroundColor(getResources().getColor(R.color.weather_cool));
mToolbar.setBackgroundColor(getResources().getColor(R.color.weather_cool));
}
我要做的是在Kotlin中写这个(知道AS有转换器,但没有改变任何东西)
if (currentObservationKotlin.tempF.compareTo() >=)
currentWeatherBox.setBackgroundColor(resources.getColor(R.color.weather_warm))
toolbar.setBackgroundColor(resources.getColor(R.color.weather_warm))
else currentWeatherBox.setBackgroundColor(resources.getColor(R.color.weather_cool))
toolbar.setBackgroundColor(resources.getColor(R.color.weather_cool))
我知道我需要在compareTo()和之后的值,但我不确定要放置什么,因为我想将TempF与60进行比较,因为我希望颜色根据数据类的TempF值进行更改。我没有其他对象可以将它与之比较。
我可以用Java编写它,它可以与Kotlin代码的其余部分一起使用,但是试图看看Kotlin是否可以使Java if / else类似且更快地编写。
答案 0 :(得分:1)
Java和Kotlin版本几乎相同。从Java代码开始,删除分号;
,然后可以使用null
检查处理任何可以为空的内容,或者断言它们永远不会为!!
为空,或者使用另一个null
运算符。您没有显示足够的代码(即进入此代码的方法签名,或使用的变量的声明),以告诉您确切需要更改的内容。
有关处理null
值的信息,请参阅:In Kotlin, what is the idiomatic way to deal with nullable values
您可能最终会在调用setter方法时发出警告something.setXyz(value)
,而不是将其指定为属性something.xyz = value
,IDE将帮助您解决这些问题,或者您可以接受警告。
有关与JavaBean属性的互操作性的更多信息,请参阅:Java Interop: Getters and Setters
因此,考虑到所有这些,您的最终代码(稍微清理一下)可能会显示如下:
val currentTemp = currentForecastJava.getCurrentObservation()?.getTempF() ?: -1
// or change -1 to whatever default you want if there is no observation
if (currentTemp >= 60) {
val warmColor = getResources().getColor(R.color.weather_warm)
mCurrentWeatherBox.backgroundColor = warmColor
mToolbar.backgroundColor = warmColor
} else {
val coolColor = getResources().getColor(R.color.weather_cool)
mCurrentWeatherBox.backgroundColor = coolColor
mToolbar.backgroundColor = coolColor
}