2012-07-18 2 views
0

Я работаю с несколькими Fragments под Android и смущен тем, как отправлять и получать данные из встроенных приложений.Функции вызова функций, относящихся к фрагменту

Для простого объяснения, у меня есть ListFragment и MapFragment по методу, описанному here. Это означает, что List живет в классе ListFragment, однако MapActivity является Activity, который вызывается под номером LocalActivityManagerFragment.

Все работает на отдельном Fragments: Lists путевых точек, путевых точек и текущего местоположения, реализованных на MapFragment. Я также понимаю, как использовать getFragmentManager(), чтобы получить индивидуальный Fragments и использовать их события. Однако я не могу использовать этот метод для доступа к функции под MapActivity. Как я могу использовать команду goToLocation (созданная под MapActivity), если я нажму на элемент на ListView, если я не могу просто использовать getFragmentManager ??

ответ

1

Для связи между фрагментом и деятельности:

активность> Фрагмент:

вызовов на общедоступных методов фрагмента с использованием этого.

TestFragment testFrag = (TestFragment) getFragmentManager().getFragmentById(R.id.testfragment); 

if(testFrag != null && testFrag.isAdded()) 
    testFrag.testMethod("Test"); 

Фрагмент> Деятельность

Для отправки сообщений в деятельности, необходимо использовать интерфейс так в классе фрагментов добавить следующее: (Не в любом методе)

public interface testInterface{ 
    public void testMethod(String test); 
} 

testInterface mCallback; 

@Override 
public void onAttact(Activity a){ 
    try{ 
     mCallback = (testInterface) a; 
    }catch(Exception e){ 
     //TODO 
    } 
} 

затем в любой вы можете позвонить по этому телефону:

mCallback.testMethod("hello"); 

для осуществления этой деятельности implements testInterface и импортировать интерфейсной

и затем этот метод в деятельности

@Override 
public void testMethod(String testString){ 

} 

:) Просто просить больше ничего.


Редактировать

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

Я думаю, что ваш запрос - это просто метод onItemClick?

так в интерфейсе вы могли бы

public void onItemClicked(AdapterView<?> parent, View view, int position, long id); 

тогда, когда onItemClick был назван в фрагменте вы можете использовать это в нем

mCallback.onItemClicked(parent, view, position, id); 

, а затем в своей деятельности, учитывая его, реализующей интерфейс вы можете получить

@Override 
public void onItemClicked(AdapterView<?> parent, View view, int position, long id){ 

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