簡體   English   中英

從另一個片段調用一個片段的方法

[英]Call method on a fragment from another fragment

如何從另一個片段調用一個片段的方法?

我試過了:

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)來運行代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM