当用户在EditText字段中未插入任何内容并单击ID为item_1
的菜单项时,我试图调用finish()方法关闭Activity。但是,每当我尝试执行此操作时,活动都不会关闭,程序会转到下一行(并最终以异常结束)。我知道我可以以不同的方式处理此异常(也可以通过先检查空字符串然后使用Integer.parseInt来避免该异常,从而避免该异常),但是我想知道为什么finish()方法无法正常工作并且程序转到下一行。我读过类似的问题,但是this没有回答我的问题。我还确认了该程序通过添加口头日志来进入下一行。我也尝试过使用ActivityClassName.this.finish()
,但仍然无法正常工作。代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_1:
//When Option 1 is selected
Log.v("MainActivity", "Test: Before insertWeight is called");
insertWeight();
Log.v("MainActivity", "Test: After insertWeight is called");
return true;
case R.id.item_2:
//When Option 2 is selected
return true;
}
return super.onOptionsItemSelected(item);
}
private void insertWeight(){
String weightString = weightField.getText().toString().trim();
if(weightString.isEmpty()){
Log.v("MainActivity", "Test: Weight is EMPTY!!!");
finish();
}
int i = Integer.parseInt(weightString);
Log.v("MainActivity", "Test: Weight is- " + i);
}
@Override
protected void onDestroy() {
Log.v("MainActivity", "Test: Inside the onDestroy method");
super.onDestroy();
}
答案 0 :(得分:0)
js.Dynamic
在这里,您需要检查string是否不为空且不为null,然后您将打印Weight,否则会发生NumberFormatException。
答案 1 :(得分:0)
我希望这对您有用
写以下方法
/var/lib/jenkins/config.xml
调用以下给出的方法
public boolean Validates() {
if (weightField.getText().toString().equalsIgnoreCase("")) {
finish();
return false;
} else {
return true;
}
}
答案 2 :(得分:0)
MikeM。和Joachim Haglund的综合评论回答了我的问题-
“ finish()不会立即停止Activity中的代码执行。它会异步发生。”-MikeM。
“在finish()之后添加“ return;”,也许应用程序在完成finish调用之前就遇到了异常,因此通过调用return可以使条件继续下去。” – Joachim Haglund
(注意:我不知道在StackOverflow中将组合注释标记为答案的任何方法,所以我是手动进行的)