Это код, который должен позволить мне перейти к следующему упражнению с 3 методами, которые я сделал.Метод checkEditText
должен принять параметр editText
и изменить его на строку, а затем убедиться, что он не пустой.checkTextLetters
должен принимать параметр editText
, а затем убедиться, что он содержит только буквы и / или пробелы.Тогда метод configureNextButton
должен запускаться только в том случае, если 2 предыдущих метода верны:
private boolean checkEditText(EditText text){
if(text.getText().toString().trim().length() > 0)
{
return true;
}
//try and print to screen "name is left blank//
return false;
}
Я думаю, этот метод будет возвращать true
всякий раз, когда я набираю asdf
или что-то в простом тексте:
private boolean checkTextLetters(EditText text){
String line = text.getText().toString();
//checks to make sure that the string contains only the characters a-z and A-Z and/or spaces
boolean checkChars = line.matches("[a-zA-Z]");
boolean checkSpaces = line.matches("\\s+");
if(checkChars && checkSpaces){
return true;
}
else if(checkChars){
return true;
}
return false;
}
Этот метод должен просто взять текст из набранного мною простого текста и убедиться, что он содержит только буквы и пробелы:
private void configureNextButton(boolean textCheck, boolean checkIfLetters){
//create if statement to not activate button if editText is empty
if(!textCheck || !checkIfLetters) {
return;
}
//will create variable 'mainButton' from the id of 'button' on MainActivity
Button mainButton = findViewById(R.id.button);
//sets the 'mainButton' to respond to a click
mainButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//states that when 'mainButton' is clicked, it begins Intent to switch to Main2Activity
startActivity(new Intent(MainActivity.this, Main2Activity.class));
}
});
}
Это метод, в которомКнопка должна привести меня к следующему занятию.Я сохраняю метод 'checkEditText' и 'checkTextLetters' для логических переменных и передаю их в качестве параметров для этого метода, так что если они равны true
, то код позволит кнопке перейти к следующему действию и, если любой из них будет false
тогда он ничего не сделает:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editTextLines = findViewById(R.id.editText);
//call method to use 'button' to go to next activity given all conditions are true
boolean checkNotEmpty = checkEditText(editTextLines);
boolean checkIfLetters = checkTextLetters(editTextLines);
configureNextButton(checkNotEmpty,checkIfLetters);
}
Вот основной метод, где я собираю все это вместе и запускаю.Это будет работать, когда я просто установлю checkNotEmpty
и checkIfLetters
на true
или false
.Всякий раз, когда я пытаюсь объявить их значение путем вызова двух моих методов, кнопка ничего не делает.
Я изменил код и избавился от методов 'checkEditText' и 'CheckTextLetters' вместометод TextWatcher в основном методе.Это работает, но есть ошибки.1. Когда он запускается впервые, я могу нажать кнопку и перейти к следующему действию.2. Я могу ввести любую букву и цифры, но не буду принимать только цифры.Я хочу, чтобы EditText просто не работал, если он пуст, разрешал только буквы и пробелы
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText editText = findViewById(R.id.editText);
final Button button = findViewById(R.id.button);
button.setClickable(false);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if(s.toString().length() == 0)
button.setClickable(false);
else{
String line = s.toString();
boolean value = line.matches("[a-zA-Z]");
// set bool 'value' to check for alphabet letters
if(value)
button.setClickable(true);
}
}
});
//call method to use 'button' to go to next activity given all conditions are true
configureNextButton();