2013-03-07 74 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(); 

它的工作對我來說,我希望它能爲你。 希望它有幫助!祝你好運!