0
如何調用另一個片段的片段的方法?來自另一個片段的片段的調用方法
我想:
Fragment fragmentName = (fragmentName) getFragmentManager().findFragmentByTag("fragmentTag");
fragmentName.method();
但它是一個空指針。
非常感謝。
如何調用另一個片段的片段的方法?來自另一個片段的片段的調用方法
我想:
Fragment fragmentName = (fragmentName) getFragmentManager().findFragmentByTag("fragmentTag");
fragmentName.method();
但它是一個空指針。
非常感謝。
你不應該直接在片段之間進行通信(可能除了子片段之外)。相反,使用您的活動作爲中介。
FragmentA {
public void sendMessageToB(String message) {
((MainActivity)getActivity()).sendMessageToB(message);
}
}
FragmentB {
public void receiveMessage(String message) {
}
}
MainActivity {
public void sendMessageToB(String message) {
// or findById if defined in XML (same as with Views)
FragmentB fragment = (FragmentB) getFragmentManager().findFragmentByTag("FragmentB");
if (fragment != null && fragment.isAdded()) {
fragment.receiveMessage(message);
}
}
}
雖然實際上可以使用類似的代碼,但由於您要在兩個片段之間創建依賴關係,因此可能不是一個好習慣。
空指針的發生可能是因爲代碼運行時其他片段仍未初始化。只有在初始化目標後,纔可以使用某些活動或片段生命週期方法(如onAttach)來運行代碼。
您不要在保存片段的活動上調用方法,然後讓活動調用第二個片段上的方法。 – cYrixmorten
怎麼樣?你能給我一個樣品嗎? –