Как дважды открыть действие, но с разным содержимым?

#java #android #android-activity #android-intent

#java #Android #android-активность #android-намерение

Вопрос:

Я разрабатываю приложение для чата, но у меня проблема. У меня есть список контактов, и когда я выбираю один контакт, я начинаю новое действие

 Intent i = new Intent(this, MessageScreen.class);
startActivity(i);
  

но, когда я выбираю другой контакт для разговора, я буду использовать то же действие.
но оно всегда открывается с последним экраном контакта, а переменные по-прежнему имеют старые значения.

Я хотел бы создать что-то похожее на Google Talk, где вы можете начать общение с другим контактом, и все сообщения будут отображаться на одном экране, и вы сможете быстро переключаться между чатами без необходимости реконструировать экран, перезагружать сообщения и т.д.. У кого-нибудь есть идеи о том, как это реализовать?

Ответ №1:

Переключение между действиями не является обычной функцией, похоже, что есть одно второе действие, у которого есть ViewPager, заполненный несколькими чатами. При запуске этого действия они, вероятно, добавляют флаг изменить порядок на передней панели к намерению и переопределили onNewIntent для добавления нового представления на пейджер.

Комментарии:

1. Правильно, это имеет гораздо больше смысла, а также не так сложно реализовать. Спасибо.

Ответ №2:

Попробуйте что-то вроде*:

 i.PutExtra ("key", value); 
  

перед запуском действия (например, сохраните имя пользователя), а затем прочитайте ваше значение из действия и настройте (например, пользовательский интерфейс) его на основе значения

примечание: синтаксис может немного отличаться, поскольку я использую C для работы с Android#

Комментарии:

1. Я использую дополнительные функции для передачи идентификатора контакта для загрузки сообщений. Мне интересно, есть ли какой-нибудь способ, при котором мне не нужно каждый раз перезагружать сообщения. В Google Talk вы можете перемещать окна чата от одного к другому, не видя никакой загрузки, вы можете видеть оба экрана чата, когда переходите к следующему окну чата.