Я пытаюсь отправить строку из одного занятия в другое, БЕЗ изменения текущей активности. Это мой код, который я использовал:

Intent intent = new Intent(this, AnotherActivity.class);
            intent.putExtra("getFollowerNumberData", txt);
            startActivity(intent);

Использование этого кода приведет меня к другой деятельности, или я не хочу этого. Я просто хочу отправить эту строку без изменения активности. Я попробовал этот

Intent intent = new Intent();

Но это сбой моего приложения. Прежде всего это можно сделать? Если да, как я могу этого достичь?

Изменить: чтобы быть более понятным, он работает как подписчик и функции отслеживания в других приложениях или играх. Когда вы подписываетесь на кого-то, число людей, за которыми вы следили, также увеличивается на ваш следующий номер. Так как мой SignInPlayerProfile.Class (где следующее должно идти до одного тоже) находится в другом действии, я пытался получить эту информацию intent.putExtra("getFollowerNumberData, txt); из основного действия и отобразить ее в SignInPlayerPlayer с помощью text.setText(). Но проблема в том, что использование intent = new Intent(this, AnotherActivity.class); приводит меня к деятельности SignInPlayerProfile, которая мне не нравится

Я пытаюсь отправить строку из одного занятия в другое, БЕЗ изменения текущей активности (или более простых слов без перехода к другой активности).

Спасибо за помощь.

0
Amazing Person 25 Апр 2017 в 00:00

2 ответа

Лучший ответ

Когда действие закрывается, в соответствии с его жизненным циклом, оно будет уничтожено и больше не будет существовать, при запуске действия оно будет создано, а затем оно сможет получить ваши данные, поэтому вы не сможете отправить данные в уничтоженное действие которого больше нет

Вы можете использовать статические переменные для связи между действиями (классами), вы можете изменить значение статической переменной деятельности от другой деятельности, но это не очень хороший вариант для данных, которые вам нужны, потому что статические переменные живут в динамической памяти и Куча будет освобождена, если ОС Android потребуется больше памяти

Другой способ - создать обработчик сообщений в первом действии в качестве статической переменной, а затем отправить сообщение обработчику из второго действия, см. Этот пример:

http://stacktips.com/tutorials/android/android-handler-example

Я предлагаю вам использовать SharedPreferences для сохранения ваших данных в первом действии и загрузки из них во втором занятии

РЕДАКТИРОВАТЬ .

Согласно вашему редактированию, «Номер», который вы хотите использовать в другом действии в качестве «Следующего» или «Подписчиков», просто необходим, когда второе действие видно, вы должны использовать sharedpreferences для сохранения «Числа» и загрузки из него, когда вы нужно это. Например, перед методом text.settext() вы можете загрузить число из общих настроек, а затем передать его text.settext()

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

Кроме того, вы можете выполнить поиск жизненного цикла Activity и посмотреть, как использовать события жизненного цикла, такие как OnStart, для загрузки ваших данных.

1
G3ntle_Man 25 Апр 2017 в 08:46

Во-первых, рассмотрите startActivityForResult(), мы можем отправлять информацию из одного мероприятия в другое и наоборот. Как уже упоминалось, рассмотрите возможность использования shared_preferences для локального хранения в памяти. Чтобы действительно совершить этот подвиг элегантным способом, подумайте об использовании obervables (rxandroid). Вы публикуете наблюдения в одном упражнении или фрагменте,

Затем подпишитесь на другой вид деятельности или фрагмент. Я не упомянул ни шину событий, ни отто, так как rxjava / rxandroid превосходит его. В них действует обещанная система управления контекстом. Кроме того, поскольку наблюдаемые в зависимости от процесса рассмотрите возможность использования широковещательных приемников для трансляции событий через ваше приложение и внешние, если это необходимо

0
Remario 24 Апр 2017 в 23:28
43597650