2011-10-19 2 views
0

У меня есть 6 видов деятельности в моем приложении: Activity1, Activity2, TabActivity, childTab1, childtab2, ExtraActivity.Передача результатов от дочерней активности до родительской вкладки Активность

App потока:

Activity1 => Activity2 => TabActivity =>ChildTab1 or ChildTab2 => ExtraActivity 

Теперь я хочу передать некоторые данные из ExtraActivity в Activity1. Я использую StartActivityForResult для начала всех видов деятельности.

ExtraActivity способен передавать данные на ChildTab1 или ChildTab2, но я не смог отправить эти данные обратно в TabActivity и далее обратно в Activity2 и, наконец, к Activity1.

Пожалуйста, помогите!

Update: Во время поиска я получил мое решение через этот пост:

How to return a result (startActivityForResult) from a TabHost Activity?

+0

использование намерения возможно. –

+0

Я использую только намерения .. это было так очевидно, поэтому я не упоминал об этом. Проблема в том, что вы не можете определить startactivityForResult, когда вы добавляете вкладку в tabactivity. Возможно, именно поэтому намерение, установленное в setResult, теряется. – mudit

+0

использовать начало деятельности и использовать putString(). –

ответ

0

Я думаю, что вы можете делегировать onActivityResult метод-результат от ChildTabX к TabActivity с ((TabActivity) GetParent()) .onActivityResult(). Там вы просто вызываете setResult и заканчиваете() еще раз, чтобы отправить результат в Activity2. То же самое для Activity2

0

Вы можете использовать контекст приложения для передачи данных между действиями.

Способ использования контекста приложения.

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

MyApplication appContext = (MyApplication) getApplicationContext(); 
appContext.myString = "YOUR DATA; 

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

MyApplication appContext = (MyApplication) getApplicationContext(); 

Теперь строка находится в объекте appContext.

Кроме того, необходимо добавить

android:name=".MyApplication" 

к применению тега в файле манифеста.

Смежные вопросы