Проблемы с состоянием в Android Studio - PullRequest
0 голосов
/ 27 марта 2020

Я хочу проверить 2 edittexts, если один из них будет пустым, появится сообщение toast1 и если они будут одинаковыми toast2. toast1 работает по-настоящему. но когда они одинаковые или разные, он показывает toast1, он все еще говорит, что один из них пуст, есть мои коды. что мне делать?

devamButton = (Button) findViewById(R.id.devamButton);
    takimA = (EditText) findViewById(R.id.takimAtext);
    takimB = (EditText) findViewById(R.id.takimBtext);
    textTakimA = takimA.getText().toString();
    textTakimB = takimB.getText().toString();
    devamButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            if (textTakimB.isEmpty() || textTakimA.isEmpty()) {
                Toast toast1 = Toast.makeText(getApplicationContext(),"team name is empty", Toast.LENGTH_LONG);
            toast1.show();
            }
            else if (textTakimA.equals(textTakimB)) {
                Toast toast2 = Toast.makeText(getApplicationContext(),"cant be same", Toast.LENGTH_LONG);
                toast2.show();
            }
            else {
                Toast toast3 = Toast.makeText(getApplicationContext(),"No problem", Toast.LENGTH_LONG);
                toast3.show();
            }

Ответы [ 3 ]

1 голос
/ 27 марта 2020

Поскольку вы присвоили объект String до возникновения события щелчка. Поэтому при щелчке он всегда принимает старые значения.

Поместите эти две строки в callbaack события onClick:

 textTakimA = takimA.getText().toString();
textTakimB = takimB.getText().toString();

Сделайте так:

devamButton = (Button) findViewById(R.id.devamButton);
takimA = (EditText) findViewById(R.id.takimAtext);
takimB = (EditText) findViewById(R.id.takimBtext);

devamButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

textTakimA = takimA.getText().toString();
    textTakimB = takimB.getText().toString();

        if (textTakimB.isEmpty() || textTakimA.isEmpty()) {
            Toast toast1 = Toast.makeText(getApplicationContext(),"team name is empty", Toast.LENGTH_LONG);
        toast1.show();
        }
        else if (textTakimA.equals(textTakimB)) {
            Toast toast2 = Toast.makeText(getApplicationContext(),"cant be same", Toast.LENGTH_LONG);
            toast2.show();
        }
        else {
            Toast toast3 = Toast.makeText(getApplicationContext(),"No problem", Toast.LENGTH_LONG);
            toast3.show();
        }
1 голос
/ 27 марта 2020

Всякий раз, когда я сталкиваюсь с ситуацией, когда одна кнопка должна иметь несколько функций в зависимости от состояния. Я делаю это так:

devamButton = (Button) findViewById(R.id.devamButton);
takimA = (EditText) findViewById(R.id.takimAtext);
takimB = (EditText) findViewById(R.id.takimBtext);
textTakimA = takimA.getText().toString();
textTakimB = takimB.getText().toString();

if (textTakimB.isEmpty() || textTakimA.isEmpty()) {
devamButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
 Toast.makeText(getApplicationContext(),"team name is empty", Toast.LENGTH_LONG).show();
    }
}

else if (textTakimA.equals(textTakimB) {
devamButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
 Toast.makeText(getApplicationContext(),"cant be same", Toast.LENGTH_LONG).show();
    }

else {
devamButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
 Toast.makeText(getApplicationContext(),"no problem", Toast.LENGTH_LONG).show();
    }
}
1 голос
/ 27 марта 2020

Захватите текст с EditText, когда вы нажимаете кнопку devamButton, а не раньше. По сути, переместите эти строки:

textTakimA = takimA.getText().toString();
textTakimB = takimB.getText().toString();

внутри метода onClick. Таким образом, вы получите текст внутри EditTexts именно тогда, когда вам это нужно. Как только он у вас есть, вы проверяете его еще до того, как пользователь успел что-либо ввести, следовательно, оба они пусты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...