#java #android
#java #Android
Вопрос:
Я знаком с Android. Как мне передать статическую переменную из одного activity в класс. У меня есть список кнопок, и когда я нажимаю одну кнопку, я хочу открыть новое действие и в то же время передать переменную, относящуюся к этому классу. Я пытался использовать общие настройки, но тщетно. Строковая переменная, которую я хотел бы использовать, называется url . Это код, который у меня есть из класса
public class AppConstant {
public static final String BASE_URL = url;
}
BASE_URL будет использоваться в других классах, поэтому он статичен, и я хочу, чтобы он оставался таким.
Ответ №1:
кратчайшим способом было бы удалить final
ключевое слово
public static String BASE_URL = url;
это позволит вам выполнять запись в это поле из любого метода в вашем приложении
AppConstant.BASE_URL = "abc";
обратите внимание, что AppConstant
это неправильное имя для такого использования, BASE_URL
не является постоянным…
кстати. хранение данных в static
поле — очень плохой подход, не делайте этого… используется Bundle
для передачи данных между Activities
, IPC-связью (привязкой) для Services
, SharedPreferences
, SQLiteDatabase
и, вероятно, несколькими другими методами…
Комментарии:
1. удаление ключевого слова final не поможет, я хочу знать, как получить значение в классе, даже если я его удалю, у меня все равно не будет значения
Ответ №2:
Поскольку другие решения для вас не сработали, вот что-то немного другое: создайте файл saparate с именем «ext» или что-то в этом роде. внутри создайте общедоступный абстрактный класс следующим образом:
public interface ext {
HashMap <String, String> myHash = new HashMap<>();
}
Таким образом, myHash будет создан при запуске приложения и будет существовать до тех пор, пока приложение это делает, поэтому при переходе от действия к действию вы можете добавлять значения таким образом и получать к ним доступ в следующем действии:
ext.myHash.put("BASE_URL", url);
Ответ №3:
Если она статична, ее не должно быть в Activity,
Я полагаю, вы имеете в виду доступ к статической переменной из Activity?
Если это так, вы можете просто вызвать AppConstant.BASE_URL
свою Activity, если она показана красным цветом, нажмите Control Enter, чтобы исправить импорт в Android Studio.
С другой стороны, передача переменной из activity в класс может быть просто выполнена с помощью методов. Поэтому просто вызовите метод в activity и используйте строку в качестве параметра следующим образом
Otherclass.doSomethingWithString(urlInYourActivity)
Но я предполагаю, что то, что я упомянул в начале, — это то, что вы хотите сделать
Комментарии:
1. Нет, это не так, я хочу передать переменную из activity в класс, чтобы повторно преобразовать ее в другие классы, которые я уже знаю
2. Хорошо, так почему бы вам не закодировать ее в обычном классе? Извлекается ли она в activity?
3. нет, она извлекается в другом классе, и я не могу ее жестко запрограммировать, поскольку она должна меняться при каждом нажатии кнопки
4. Если она не извлекается в activity с помощью сетевых вызовов или чего-то еще, это не должно быть слишком сложно, если вы обновите свой вопрос с источником данных, я смогу помочь вам лучше