2017-06-10 60 views
0

我正在尝试构建一个年龄计算器应用程序。当我没有在EditTexts之一中输入数字并点击计算Button时,我的应用程序崩溃了! "App has stopped" and click the photo在计算数字时检查EditText是否为空

我试图设置yearbirth.isEmpty() || yearbirth.equals("") || yearbirth == null,但没有任何工作。

CODE: -

class MainActivity : AppCompatActivity() { 
var yearage:Int?= null 
var monthage:Int?= null 
var dayage:Int?= null 

@SuppressLint("SetTextI18n") 
override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    setContentView(R.layout.activity_main) 

    buGetAge.setOnClickListener({ 
     val year= Calendar.getInstance().get(Calendar.YEAR) 
     val month= Calendar.getInstance().get(Calendar.MONTH) 
     val day= Calendar.getInstance().get(Calendar.DAY_OF_MONTH) 

     var yearage = year - Integer.parseInt(yearbirth.text.toString()) -1 
     val monthage:Int? 
     val dayage:Int? 

     if (yearbirth== null) { 
      Toast.makeText(this, "You have to enter your year berth", Toast.LENGTH_LONG).show() 
     } else { 
      if (month < Integer.parseInt(monthbirth.text.toString())){ 
       monthage=(Integer.parseInt(monthbirth.text.toString())- month- 12)* -1 
      }else if (month > Integer.parseInt(monthbirth.text.toString())) { 
       yearage=year- Integer.parseInt(yearbirth.text.toString()) 
       monthage= (Integer.parseInt(monthbirth.text.toString())- month)* -1 
      }else { 
       yearage=year- Integer.parseInt(yearbirth.text.toString()) 
       monthage=0 
      } 
      if (day < Integer.parseInt(daybirth.text.toString())){ 
       dayage= (Integer.parseInt(daybirth.text.toString())- day- 30)* -1 
      }else if (day > Integer.parseInt(daybirth.text.toString())){ 
       dayage= day- Integer.parseInt(daybirth.text.toString()) 
      }else { 
       dayage=0 
      } 

      val a= (yearage* 12)+ monthage 
      val b= (a * 30)+ dayage 

      val ageinyears= "$yearage years" 
      val ageinmonths= "$a months" 
      val ageindays= "$b days" 

      txtshow.text = "Your age is $yearage years, $monthage months and $dayage days" 
      txtshow2.text = "\nYOUR AGE:\nin years:\n\nin months:\n\nin days:" 
      txtshow3.text = "\n\n$ageinyears \n\n$ageinmonths \n\n $ageindays " 

      this.yearage=yearage 
      this.monthage=monthage 
      this.dayage=dayage 
     } 
    }) 
} 
} 
+2

取而代之的是崩溃的照片,至极大家都知道它看起来的样子,尽量把一些崩溃日志这里 –

回答

0

您可以检查空Input这样的:

newString = Integer.toString(yearbirth).trim(); 
if (newString.matches("")) { 
    Toast.makeText(this, "EditText is empty", Toast.LENGTH_SHORT).show(); 
    return; 
} 
+0

我试过了并没有工作 –

+0

然后添加崩溃报告,看看发生了什么..在Android工作室,从设备选项卡的“工具/ android/android设备监视器”选择您的设备,然后在'logcat'部分点击'添加'按钮并在'filter name'中为您的应用程序设置一个名称,并在'按应用程序名称'添加您的包名称。运行您的应用程序并查看崩溃报告。如果你正在使用另一个IDE,那么在谷歌搜索如何获得应用程序登录你的IDE –

+0

谢谢我会尝试 –

0

验证yearbirth.text.toString()不为空则尝试将其解析为一个整数之前(如果它也是一个)

为了达到目的,请将您在代码中显示的行写入:

var yearage = year - Integer.parseInt(yearbirth.text.toString()) -1 

内的if验证输入是有效的,就像这样:

if(yearbirth.text.toString().matches(Regex("\\d+"))) 
    var yearage = year - Integer.parseInt(yearbirth.text.toString()) -1