Как получить значение от анонимного класса?

Я хочу получить такое значение от анонимного класса, но оно всегда ничего не показывает о test0, может ли кто-нибудь мне с этим помочь?

        final String[] test = new String[1];
        txt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                test[0] = "abc";
            }
        });
        String test0 = test[0];
        Toast.makeText(this, test0, Toast.LENGTH_SHORT).show();

Вы проверили ответы?

Skizo-ozᴉʞS 13.04.2018 10:18
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
1
86
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Значение для test[0] будет доступно только после щелчка по View. Ваш код этого не ждет. Переместите Toast внутрь ClickListener, и он заработает.

Вы должны поместить Toast внутрь setOnClickListener(), иначе он не увидит изменений на test[].

final String[] test = new String[1];
txt.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
      test[0] = "abc";
      Toast.makeText(this, test[0], Toast.LENGTH_SHORT).show();
  }
});

Вы должны изменить свой слушатель, чтобы включить показ всплывающего сообщения внутри метода onClick(), потому что вы хотите, чтобы это значение отображалось при "щелчке". В противном случае значение test0 не обновляется вне этого метода:

final String[] test = new String[1]; txt.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        test[0] = "abc";
        String test0 = test[0];
        Toast.makeText(this, test0, Toast.LENGTH_SHORT).show();
    }
});

Сделайте это изменение

    final String[] test = new String[1];
    txt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            test[0] = "abc";
            Toast.makeText(this, test[0], Toast.LENGTH_SHORT).show();
        }
    });

Значение test [0] обновляется только после срабатывания события щелчка. Поэтому вам нужно поместить свой код в метод onClick.

Другие вопросы по теме