【问题标题】:i get a black screen using while on kotlin我在 kotlin 上使用时出现黑屏
【发布时间】:2019-07-14 22:31:24
【问题描述】:

每当我启动程序时屏幕变黑,当我不使用while语句时不会发生这种情况,我想说的是while(电子邮件不包含@!!电子邮件长度

registrar_button_register.alpha = 0.5f

        while(email.contains('@') || password.length()<5){

        }
        registrar_button_register.animate().alpha(1f).setDuration(200)
        registrar_button_register.setOnClickListener {// and code goes on...

我所期待的是,如果电子邮件有 @ 并且密码有 6 个字符,则不透明度将为 1f 并且可以按下按钮,我知道电子邮件 while 语句应该不包含 @ 但我不知道怎么做

对于那些不明白我想要达到什么目的的人,请尝试在电子邮件上没有@或短密码的情况下在 Instagram 上注册

也许可以在这里使用委托或某种可观察的机制??

【问题讨论】:

  • 所有有效的电子邮件地址都会有一个@符号,所以你有一个无限循环,为什么不简单的if语句,这个逻辑/代码没有多大意义?
  • 这就是我的意思,只有当他们有@(电子邮件必须有效)时,不透明度才能达到与 instagram 相同的 100%
  • 我只是想让它更酷我可以有一个 if 语句说 if(email.isEmpty || password.isEmpty){ Toast.makeText(this, "type email a password", Toast.LENGTH_SHORT ).show()} 但还不够好
  • 使用 TextWatcherEditText 字段,并仅在文本更改时使用回调中的 if 语句进行检查 - 循环是错误的逻辑。

标签: android android-studio kotlin


【解决方案1】:

你有一个无限的while 循环。要检查条件是否为真,只需使用 if 语句。以下几行应该可以工作,

//Use && to ensure both conditions are true
if(email.contains('@') && password.length()<5){
  registrar_button_register.animate().alpha(1f).setDuration(200)
  registrar_button_register.setOnClickListener {// and code goes on...
} 

【讨论】:

  • 我试图用 while 做的是,直到电子邮件有 @ 并且密码足够长,不会进入下一件事,即提高不透明度并让按钮做他们的事情跨度>
  • 我只是想让它更酷我可以有一个 if 语句说 if(email.isEmpty || password.isEmpty){ Toast.makeText(this, "type email a password", Toast.LENGTH_SHORT ).show()} 但还不够好
  • 尝试在 Instagram 应用程序中输入不带 @ 的电子邮件,您将看到注册按钮发生了什么,这正是我想要实现的目标
  • 在这种情况下,不要只使用while循环(无限的while循环会阻塞UI线程)。您需要添加一个 else 条件来提示(吐司、小吃店等)用户“更正”他的电子邮件。在他这样做之后,再次运行该函数。
  • 尝试在instagram登录时输入不带@的电子邮件
猜你喜欢
  • 2021-12-26
  • 2017-09-18
  • 1970-01-01
  • 2020-11-12
  • 2017-10-03
  • 2020-07-23
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多