【发布时间】:2022-01-19 13:26:27
【问题描述】:
这段代码是在 oncreate 之前编写的,它工作正常,但是当我将它向下移动以创建一个函数时,这个“它”显示这些错误,我检查了没有像“它”这样的变量
这是代码
if (manager.getInt("limitOfBox") > 0) {
Bloom.with(this)
.setParticleRadius(5f)
.setEffector(
BloomEffector.Builder()
.setDuration(1500)
.setAnchor(
(it.width / 2).toFloat(),
(it.height / 2).toFloat()
)
.build()
)
.boom(it)
这些是错误,“它”变成了红色
所以请告诉我要写什么而不是 "it" ,这样它就不会抛出错误。
这是运行良好的旧代码:-
class LuckyBoxActivity : AppCompatActivity() {
lateinit var binding: ActivityLuckyBoxBinding
lateinit var db: FirebaseFirestore
lateinit var myRepo: MyRepo
lateinit var manager: PrefManager
val activity = this
@SuppressLint("SetTextI18n")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLuckyBoxBinding.inflate(layoutInflater)
setContentView(binding.root)
showProgress()
var winningCoins = 0
var limit = 0
db = FirebaseFirestore.getInstance()
myRepo = MyRepo(this)
manager = PrefManager(this)
loadBanner()
db.collection("Earning").document("box")
.addSnapshotListener { value, error ->
if (error == null) {
val data = value?.toObject(WatchVideoModel::class.java)
winningCoins = data?.winningCoins.toString().toInt()
limit = data?.limit.toString().toInt()
Log.e("luck Box", "onCreate: $winningCoins")
Log.e("luck Box", "onCreate: $limit")
if (manager.getInt("limitOfBox") == 102) {
binding.limit.text = "$limit"
manager.setInt("limitOfBox", limit)
} else {
binding.limit.text = manager.getInt("limitOfBox").toString()
}
dismissProgress()
}
}
binding.giftImg.setOnClickListener {
val winningAmount = (0..winningCoins).random()
if (manager.getInt("limitOfBox") > 0) {
Bloom.with(this)
.setParticleRadius(5f)
.setEffector(
BloomEffector.Builder()
.setDuration(1500)
.setAnchor(
(it.width / 2).toFloat(),
(it.height / 2).toFloat()
)
.build()
)
.boom(it)
Handler(Looper.getMainLooper()).postDelayed(Runnable {
binding.giftImg.visibility = View.INVISIBLE
}, 1000)
Handler(Looper.getMainLooper()).postDelayed(Runnable {
manager.setInt("limitOfBox", manager.getInt("limitOfBox") - 1)
binding.limit.text = manager.getInt("limitOfBox").toString()
binding.resultText.visibility = View.VISIBLE
if (winningAmount == 0) {
binding.resultText.text =
"Oops !! better luck next time..."
} else {
binding.resultText.text = "$winningAmount Coins"
myRepo.addCoins(winningAmount.toString().toDouble())
}
}, 1500)
} else {
showToast("Daily Limit Over")
}
}
}
fun loadBanner() {
val view = BannerView(this@LuckyBoxActivity, constants.banner, UnityBannerSize(320, 50))
view.load()
binding.bannerAd.addView(view)
}
companion object {
private const val TAG = "LuckyBoxActivity"
}
}
【问题讨论】:
-
我也尝试使用“this”而不是“it”,但后来宽度和高度变成了红色
-
我们需要查看更多原始代码的上下文,以了解
it所指的内容。 -
在这个例子中指的是
binding.giftImg -
这是正确的..? if (manager.getInt("limitOfBox") > 0) { Bloom.with(this) .setParticleRadius(5f) .setEffector( BloomEffector.Builder() .setDuration(1500) .setAnchor( (binding.giftImg.width / 2) .toFloat(), (binding.giftImg.height / 2).toFloat() ) .build() ) .boom(binding.giftImg)
-
是的,我想是的
标签: android android-studio kotlin