Задать вопрос
@sagisuu

Почему switch-case неверно обрабатывает значение переменной, полученной из блока EditText?

Имеется код Java (MainActivity.java):
package com.example.hellodroid;

import android.annotation.SuppressLint;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    EditText searchBar;
    Button searchButton;
    TextView searchResult;
    String request;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        searchBar = (EditText) findViewById(R.id.searchBar);
        searchButton = (Button) findViewById(R.id.searchButton);

        searchButton.setOnClickListener(new View.OnClickListener() {
            //@SuppressLint("SetTextI18n")
            @Override
            public void onClick(View v) {

                switch (String.valueOf(searchBar)) {
                    case "200":
                        searchResult.setText("200: «Все в порядке». Это код, который возвращается, когда веб-страница или ресурс действуют точно так, как ожидается.");
                        break;
                    case "404":
                        searchBar.setText("404: «Запрошенный ресурс не найден». Наиболее распространенное сообщение об ошибке. Означает, что запрошенный ресурс не существует и сервер не знает, существовал ли он когда-либо.");
                        break;
                    default:
                        Toast.makeText(MainActivity.this, "Пожалуйста, введите запрос или выберите код.", Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });
    }
}


И код интерфейса (activity_main.xml):
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
		xmlns:android="http://schemas.android.com/apk/res/android"
		xmlns:tools="http://schemas.android.com/tools"
		xmlns:app="http://schemas.android.com/apk/res-auto"
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		tools:context=".MainActivity" android:background="#272727" android:id="@+id/logo">
	<EditText
			android:layout_width="335dp"
			android:layout_height="52dp"
			android:inputType="textPersonName"
			android:ems="10"
			android:id="@+id/searchBar"
			android:hint="  Поиск..." android:textColor="#FFFFFF"
			android:textColorHint="#CCCCCC" android:textSize="20sp" android:lines="1" android:editable="true"
			app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="16dp"
			app:layout_constraintEnd_toStartOf="@+id/searchButton" android:layout_marginEnd="8dp"
			app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="16dp"
			android:textColorHighlight="#FFFFFF" android:textColorLink="#4891FF" android:background="#575757"/>
	<Button
			android:text=""
			android:layout_width="58dp"
			android:layout_height="52dp" android:id="@+id/searchButton"
			android:textColor="#FFFFFF" android:textStyle="bold"
			android:checkable="false" app:strokeColor="#FFFFFF" android:textAlignment="center"
			android:textAllCaps="true" android:layout_marginEnd="16dp" app:layout_constraintEnd_toEndOf="parent"
			app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="16dp"
			app:layout_constraintStart_toEndOf="@+id/searchBar" android:background="#7C7C7C"
			android:backgroundTint="#FFFFFF" android:backgroundTintMode="add" android:onClick="search"/>
	<TextView
			android:layout_width="400dp"
			android:layout_height="650dp" android:id="@+id/searchResult"
			android:layout_marginEnd="8dp" app:layout_constraintEnd_toEndOf="parent"
			app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
			app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp"
			android:layout_marginTop="8dp" app:layout_constraintTop_toBottomOf="@+id/searchBar"
			android:textAlignment="textStart" android:linksClickable="true"/>
</androidx.constraintlayout.widget.ConstraintLayout>


Запускаю приложение на эмуляторе, ввожу в поисковую строку (EditText с id searchBar) значение "200" (без кавычек), но программа всё равно выводит "Пожалуйста, введите запрос или выберите код." (значение default из switch-case) в всплывающем окне. В чём ошибка?
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Сложный 5 комментариев
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Ну так посмотрите, что прилетает, верните значение в строке, которая выводится.
И кажется нужно так
switch (String.valueOf(searchBar.getText())) {
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы