Иногда Intents становятся слишком громоздкими и раздражающими, вместо этого я использую более простой (возможно, не оптимальный) шаблон проектирования: Singleton.
Синглтон работает как общий ящик для хранения, доступный для кода, который находится в любом месте вашего приложения, где значения хранятся, пока активен жизненный цикл приложения. Вы также можете поместить методы там.
Singleton - это класс, который может быть создан только один раз и может использоваться в качестве единого хранилища для всех переменных, к которым вам нужен доступ из любого места. Вы можете установить / получить любую переменную в синглтоне из любого вида деятельности или класса, даже из контекста!
Как я уже сказал, возможно, есть лучшие варианты, но у меня нет времени наказать себя намерениями, нулевыми указателями, а что нет.
Создайте новый класс со следующим кодом, назовите его mySingleton или любым другим, и начинайте устанавливать / получать переменные отовсюду!:
public class MySingleton extends Application{
private volatile static appSingleton mInstance = null;
private String mystring;
private appSingleton(){
mystring="hello"; //initialize your var here
//Add all the variables you need, here.
public static MySingleton getInstance(){ //Singleton's core
if(mInstance == null){
mInstance = new MySingleton();
}
return mInstance;
}
//Place Set and Get methods here
public String getMystring(){return this.mystring;}
public void setMystring(String s){mystring = s;}
//Add get/setmethods for your other variables here
} //Thats it
Теперь, допустим, вы хотите установить mystring на "до свидания" в Деятельности B, а затем хотите сделать это:
MySingleton.getInstance().setMystring("hello");
Если вы хотите получить доступ к «mystring» из ЛЮБОГО другого вида деятельности, класса и т. Д. И отобразить его в текстовом поле, просто сделайте это:
MyTextBox.setText(MySingleton.getInstance().getMystring());
Как видите, вы можете записывать значения в любом месте и читать эти значения из любого места с помощью одной строки кода. Наслаждайтесь!