调用属于片段的活动的功能

时间:2012-07-18 21:53:37

标签: android android-fragments android-mapview

我正在使用Android下的多个Fragments,并对如何从嵌入式应用发送和接收数据感到困惑。

有一个简单的解释,我使用here解释的方法ListFragmentMapFragment。这意味着List位于ListFragment课程中,但MapActivityActivity,在LocalActivityManagerFragment下调用。

所有内容都适用于Fragments上实施的航路点,航路点和当前位置的ListsMapFragment个。我也了解如何使用getFragmentManager()获取个人Fragments并使用他们的活动。但是,我无法使用此方法访问MapActivity下的函数。如果我点击goToLocation上的项目,如果我不能简单地使用MapActivity?如何使用ListView(在getFragmentManager下创建)等命令?

1 个答案:

答案 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){

}