我正在使用Android下的多个Fragments
,并对如何从嵌入式应用发送和接收数据感到困惑。
有一个简单的解释,我使用here解释的方法ListFragment
和MapFragment
。这意味着List
位于ListFragment
课程中,但MapActivity
是Activity
,在LocalActivityManagerFragment
下调用。
所有内容都适用于Fragments
上实施的航路点,航路点和当前位置的Lists
:MapFragment
个。我也了解如何使用getFragmentManager()
获取个人Fragments
并使用他们的活动。但是,我无法使用此方法访问MapActivity
下的函数。如果我点击goToLocation
上的项目,如果我不能简单地使用MapActivity
?如何使用ListView
(在getFragmentManager
下创建)等命令?
答案 0 :(得分:1)
用于片段和活动之间的通信:
活动>片段:
使用此方法调用片段的公共方法。
TestFragment testFrag = (TestFragment) getFragmentManager().getFragmentById(R.id.testfragment);
if(testFrag != null && testFrag.isAdded())
testFrag.testMethod("Test");
片段>活性
要向活动发送消息,您需要使用接口,因此在fragment类中添加:(不在任何方法中)
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){
}