2014-08-28 3 views
-2

Кажется, я ничего не могу найти. Вот вопрос:Как отправить данные фрагменту из действия, которое не принадлежит ему?

У меня есть фрагмент А, происходит от деятельности A. Этот фрагмент запуска активности B.

Я хочу отправить От активность B до фрагмента А. Как это делается?

+1

отправить что? что ты уже испробовал? BroadcastReciver? Обслуживание? пользовательский класс приложения? почему бы вам не вернуть данные из Activity B в A, а затем позволить Activity A отправить его в Fragment A ... – Selvin

+0

Я думал об этом, есть ли более прямое решение. Проблема в том, что активность A может быть уничтожена после запуска активности. B – mskw

+0

Я попытался использовать постоянство, где установка булева в комплекте. Но это похоже на взлом – mskw

ответ

2

Вы можете использовать 'startActivityForResult()'. Это запустит действие, а затем, когда это будет сделано, оно позволит вам вернуть некоторые данные в функцию обратного вызова в фрагменте, который вы переопределите. Вот пример:

private void ActivityBStarter(){ 
    Intent i = new Intent(getApplicationContext(),ActivityB.class); 
    startActivtyForResult(i); 
} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    //use data.get... to get data from the activity. 
    //This is only called when the activity completes. 
} 

Затем в деятельности, сделать это, когда вы хотите, чтобы закончить свою деятельность и передать результат обратно:

Intent returnIntent = new Intent(); 
returnIntent.putExtra("result",result); 
setResult(RESULT_OK,returnIntent); //RESULT_OK can really be any int you want. 
finish(); 

В качестве альтернативы можно использовать посланник и передачу сообщения для передачи данных между вашей Activity и фрагментом, поскольку ActivityB запущен, но это обычно не очень полезно, если вы не используете Сервис.

Вот ссылка: Example: Communication between Activity and Service using Messaging

Успехов!

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