2013-03-07 39 views
3

首先,我按照this tutorial创建了一个带有操作栏+选项卡的活动。这个实现的功能是它在main_activity布局中有一个fragment_container(只是一个线性布局),并根据选择的选项卡用片段替换它。如何获取片段的ID?

现在,我试图添加一些fragment-to-activity communication,但我得到一个nullpointerexemption。

这里是我的代码:

com.mypackage.MAPFragment map_ = 
(com.mypackage.MAPFragment) getFragmentManager().findFragmentById(R.id.map); 
map_.ActivityToMapMethod(); 

MAPFragment片段膨胀具有的地图有一个MapView和ID的XML布局。我不确定地图是我应该使用的。我已经在另一个应用程序中成功完成了该操作,但那段时间通过xml添加了片段,而不是使用replace()。

+0

你使用支持包的片段..? – Pragnani 2013-03-07 17:29:36

+0

没有。我正在开发API等级11及以上。 – user1923613 2013-03-07 17:46:46

回答

4

如果Theres实际上是一个Fragment,findFragmentById()方法会从容器中获取一个Fragment id。否则,您将返回空白。 findFragmentById(R.id.fragment_container)在教程的LinearLayout中返回片段。

+0

下面是我做的解决它:'MyMapFragment = new MAPFragment(); ((com.mypackage.MAPFragment)MyMapFragment).ActivityToMapMethod();'。你的回答确实给出了关键信息,我选择它作为答案。谢谢。 – user1923613 2013-03-08 11:04:04

+0

@ user1923613,我不认为创建片段的“新”实例是一种好方法。 – eRaisedToX 2017-04-28 05:43:50

0

你应该尝试:

this.getId(); 

它的工作对我来说,我希望它能为你。 希望它有帮助!祝你好运!