Проблема заключается в том, что статические методы не являются связанных с каким-либо конкретным объектом, но с классом в целом. Таким образом, они могут видеть только статические поля в вашем классе. Ваша переменная text1
даже не та, если вы говорите правду. Вместо этого это локальная переменная, которая существует только для длины метода onCreate()
. Если вы знаете, вы будете только когда-либо один экземпляр вашей деятельности (и это, вероятно, не является необоснованным предположение), что вы могли бы сделать, это использовать
private static TextView text1;
в верхней части вашего класса (или, в принципе, в любом месте за пределами метода). Модификатор final
не купит вам ничего. Ваш выбор состоит в том, сделать это публичным или частным, но я склонен к закрытию по умолчанию (если нет причины для чего-то еще).
Альтернатива заключается в том, чтобы спросить себя, почему NextTxt()
является статическим; если вы сделаете его обычным методом экземпляра, тогда вам все равно нужно объявить text1
в классе, но не обязательно быть статичным. Но тогда вам понадобится экземпляр, чтобы позвонить ему.
Почему «NextTxt» должен быть статичным? – Simon
@Simon Мне нужно использовать этот метод из другого класса – user1880779
* Если * (и только если), экземпляр класса создается в вашей Деятельности, и вы можете * гарантировать *, что время жизни класса не больше Activity, а затем передайте ссылку на TextView для другого класса. Если вы не можете гарантировать срок службы, вы рискуете серьезной утечкой памяти, так что возвращайтесь и спрашивайте о обратных вызовах. – Simon