Передача переменной из действия в класс

#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 с помощью сетевых вызовов или чего-то еще, это не должно быть слишком сложно, если вы обновите свой вопрос с источником данных, я смогу помочь вам лучше