[英]Trying to stop going to the next activity in a while with the code “break()”. Why doesn't this work?
我試圖阻止用戶,如果輸入低於18,則轉到下一個活動。 我嘗試通過“ break()”語句來嘗試此操作。 不起作用 在大多數情況下,它甚至崩潰了。 我是Java新手,如果能很好地解釋您給出的新代碼,將不勝感激。
謝謝你的幫助。
碼:
public class AirPortActivity extends AppCompatActivity {
private EditText nameTextView;
private EditText inputNumberAge;
private Button nextActivityButton;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.optionsButton:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_air_port);
nameTextView = (EditText)findViewById(R.id.nameeditText);
inputNumberAge = (EditText)findViewById(R.id.inputNumberAge);
nextActivityButton = (Button) findViewById(R.id.nextActivityButton);
nextActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int number = 18;
int parsedInt = Integer.parseInt(inputNumberAge.getText().toString());
int numberoferror = 18;
while (parsedInt < numberoferror) {
break;
}
String nameOfUser = nameTextView.getText().toString();
int numberAge = 18;
startStory(nameOfUser);
String nameOfUserToast = "Hi " + nameOfUser;
Toast.makeText(AirPortActivity.this, nameOfUserToast, Toast.LENGTH_SHORT).show();
}
});
};
private void startStory(String nameOfUser) {
Intent intent = new Intent(this, AirPortSetup.class);
startActivity(intent);
}
}
while (parsedInt < numberoferror) {
break;
}
這將立即退出,不執行任何操作,或者進入一個永不退出的無限循環。 我也不是你想要的。 如果您不想在parsedInt <18時執行其余功能,則需要:
if(parsedInt < numberoferror) {
return;
}
你的意思是
switch (item.getItemId()) {
case R.id.optionsButton:
return false; // or maybe true?
}
所有的break
操作都是退出switch
塊,這將是一個空語句。 return
立即退出功能。
同樣, while (parsedInt < numberoferror) { break;}
將永遠循環,或在第一次迭代時退出。 您是否應該使用if
語句,而不是使用break
再次return
?
如果要停止用戶進行下一個活動,則需要像這樣實現onClickListener
。
nextActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int number = 18;
int parsedInt = Integer.parseInt(inputNumberAge.getText().toString());
int numberoferror = 18;
if (parsedInt < numberoferror) {
return;
}
String nameOfUser = nameTextView.getText().toString();
int numberAge = 18;
startStory(nameOfUser);
String nameOfUserToast = "Hi " + nameOfUser;
Toast.makeText(AirPortActivity.this, nameOfUserToast, Toast.LENGTH_SHORT).show();
}
});
因為如果parsedInt
大於numberoferror
,則循環永遠不會被執行,如果numberoferror
是大於parsedInt
則循環將運行無限次。
您需要用if語句替換while循環。
問題是您的控制流程。 休息是一種方法,但是使用條件更容易理解。 如果滿足條件,那么您將轉到下一個活動,否則您必須將其告知用戶,否則就不要移動。
另一個問題是,由於格式不正確,在Java中解析數字可能會崩潰,請在該操作中使用try / catch進行修復
nextActivityButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String inputValue = inputNumberAge.getText().toString();
try {
final int limit = 18;
int userNumber = Integer.parseInt(inputValue);
if (limit >= userNumber) {
//HERE GO TO NEXT ACTIVITY
}
} catch (NumberFormatException e) {
//TOAST
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.