2013-03-10 2 views
8

У меня есть классы A, B и C. Класс A отправляет намерение B, B запускает C, C возвращается в B ..... но затем внутри onCreate класса B он хочет намерения класса A. Но потому что его из класса C он не получает, но мне все еще нужно намерение класса AПолучение дополнительных возможностей и метод onCreate?

Любая идея о том, как обойти это? Я думаю, что одним из решений может быть сохранение extra.getString в базе данных или аналогичной?

Bundle extras = getIntent().getExtras(); 
newString = extras.getString("ID"); 
+1

Вы имеете в виду: A-> B-> C-> A (как вы пишете) или A-> B-> C-> B (как вы подразумеваете позже)? –

+0

О, я аполитизирую, я имел в виду A-> B-> C-> B – user1876202

+0

Единственное, что вы хотите, это строка из «ID» –

ответ

2

Так что, если я получил это право:

Activty A:

  • Создает цельAtoB
  • Запускает активность B

Activty Б

  • Принимает intentAtoB
  • Создает intentBtoC
  • Запускает активность C

активность С

  • Получить intentBtoC
  • делает что-то

Сейчас: Имеет ли активность C:

  1. возвращение к деятельности B с использованием отделки() или

  2. начала активность B снова?

Если 1, когда вы вернетесь в действие B, у него все еще будет все, что вы настроили при его создании. Поэтому вам нужно извлечь все из намерения в onCreate of B.

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

Если вы могли (а) подтвердить, что последовательность, если и (б) уточнить, почему вышеупомянутое не работает, я уверен, что мы можем двигаться вперед.

+0

Подход '1. вернитесь в Activity B, используя finish(), 'лучше. Просто сохраните значения в Activity B на ** Переменные уровня класса **, в 'onCreate()' для операции B. Как я и предложил в своем предыдущем ответе. – user370305

+0

@ user370305 Я согласен, что это лучший подход, я просто пытаюсь выяснить, что автор вопроса на самом деле делает, чтобы помочь им в том, откуда они начинаются. –

5

Поскольку я точно не знаю, как это происходит, это решение, но может и не быть подходящим.

При запуске новой деятельности, поставить дополнительный

intent.putExtra("ID_FROM_A", value); // except for ActivityA value = mIdFromA 
startActivity(intent); 

На приемной деятельности

onCreate() 
{ 
    mIdFromA = getIntent().getStringExtra("ID_FROM_A"); 
}