Как передать переменную из одного действия в другое, которое не является непосредственным действием? - PullRequest
0 голосов
/ 09 мая 2020

В android для передачи переменной из действия 1 в действие 2 используются намерения. Но как передать переменные из действия 1 в действие 3. В моем проекте я получаю идентификатор от пользователя в действии входа в систему, который необходим для другого действия, но не является непосредственным действием для него. Как это сделать?

Ответы [ 3 ]

1 голос
/ 09 мая 2020

Создайте переменную stati c в своем классе Helper,

public class Helper {
    public static int user_id;
}

Установите ее значение в действии A:

    Helper.user_id = 309; // id you want to save. 

И затем получите доступ к ее значению в действии B:

    if(Helper.user_id != 0){
         user_id = Helper.user_id;
    }
1 голос
/ 09 мая 2020

Вы можете передать идентификатор из одного действия в другое, используя eventBus

Gradle

implementation 'org.greenrobot:eventbus:3.2.0'

Activity-1 : где нужно передать id

EventBus.getDefault().post(new MessageEvent());

Activity-3 : где нужно получить id

Зарегистрировать eventBus

@Override
 public void onStart() {
     super.onStart();
     EventBus.getDefault().register(this);
 }

 @Override
 public void onStop() {
     super.onStop();
     EventBus.getDefault().unregister(this);
 }

Подготовка подписчиков

Подписчики реализуют методы обработки событий (также называемые «методами подписчика»), которые будут вызываться при публикации события. Они определены с помощью аннотации @Subscribe.

@Subscribe(threadMode = ThreadMode.MAIN)  
public void onMessageEvent(MessageEvent event) {/* Do something */};
1 голос
/ 09 мая 2020

Вы можете использовать SharedPreference

Установка значений в предпочтениях:

SharedPreferences.Editor editor = getSharedPreferences("mypref", MODE_PRIVATE).edit();
 editor.putString("name", "john");
 editor.putInt("id", 12);
 editor.apply();

Получение данных из предпочтений:

SharedPreferences prefs = getSharedPreferences("mypref", MODE_PRIVATE); 
String name = prefs.getString("name", "");
int idName = prefs.getInt("id", 0); 
...