Я пытаюсь отправить строку из одного занятия в другое, БЕЗ изменения текущей активности. Это мой код, который я использовал:
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, которая мне не нравится
Я пытаюсь отправить строку из одного занятия в другое, БЕЗ изменения текущей активности (или более простых слов без перехода к другой активности).
Спасибо за помощь.
2 ответа
Когда действие закрывается, в соответствии с его жизненным циклом, оно будет уничтожено и больше не будет существовать, при запуске действия оно будет создано, а затем оно сможет получить ваши данные, поэтому вы не сможете отправить данные в уничтоженное действие которого больше нет
Вы можете использовать статические переменные для связи между действиями (классами), вы можете изменить значение статической переменной деятельности от другой деятельности, но это не очень хороший вариант для данных, которые вам нужны, потому что статические переменные живут в динамической памяти и Куча будет освобождена, если ОС Android потребуется больше памяти
Другой способ - создать обработчик сообщений в первом действии в качестве статической переменной, а затем отправить сообщение обработчику из второго действия, см. Этот пример:
http://stacktips.com/tutorials/android/android-handler-example
Я предлагаю вам использовать SharedPreferences
для сохранения ваших данных в первом действии и загрузки из них во втором занятии
РЕДАКТИРОВАТЬ .
Согласно вашему редактированию, «Номер», который вы хотите использовать в другом действии в качестве «Следующего» или «Подписчиков», просто необходим, когда второе действие видно, вы должны использовать sharedpreferences для сохранения «Числа» и загрузки из него, когда вы нужно это. Например, перед методом text.settext()
вы можете загрузить число из общих настроек, а затем передать его text.settext()
Вы не должны сохранять свои данные в переменных или классах и должны сохранять их в файле, таком как база данных или SharedPreferences, тогда вы можете загружать их каждый раз, когда захотите
Кроме того, вы можете выполнить поиск жизненного цикла Activity и посмотреть, как использовать события жизненного цикла, такие как OnStart, для загрузки ваших данных.
Во-первых, рассмотрите startActivityForResult()
, мы можем отправлять информацию из одного мероприятия в другое и наоборот. Как уже упоминалось, рассмотрите возможность использования shared_preferences для локального хранения в памяти. Чтобы действительно совершить этот подвиг элегантным способом, подумайте об использовании obervables (rxandroid). Вы публикуете наблюдения в одном упражнении или фрагменте,
Затем подпишитесь на другой вид деятельности или фрагмент. Я не упомянул ни шину событий, ни отто, так как rxjava / rxandroid превосходит его. В них действует обещанная система управления контекстом. Кроме того, поскольку наблюдаемые в зависимости от процесса рассмотрите возможность использования широковещательных приемников для трансляции событий через ваше приложение и внешние, если это необходимо
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].