2

Android アプリで Fragment を使用しています。現時点では、分割ビュー スタイルで表示されている 2 つのフラグメントがあります。フラグメント A とフラグメント B を呼び出しましょう。フラグメント B は頻繁に変更され、変更される可能性のあるさまざまなタイプのフラグメントがあります。

Fragment B でメソッドを呼び出そうとしています。このメソッドは、表示できる Fragment のほとんどのタイプに存在しますが、すべてのタイプに存在するわけではありません。

ここに私が持っているものがあります:

FragmentManager fm = getSupportFragmentManager();
Fragment frag = fm.findFragmentByTag("ContentFrag");
if (frag != null) {
    if (frag.getClass().equals(ExampleFragment1.class))
        ((ExampleFragment1)frag).refresh();
    else if (frag.getClass().equals(ExampleFragment2.class))
        ((ExampleFragment2)frag).refresh();
    else if (frag.getClass().equals(ExampleFragment3.class))
        ((ExampleFragment3)frag).refresh();
}

そして、ここに私が欲しいものがあります:

FragmentManager fm = getSupportFragmentManager();
Fragment frag = fm.findFragmentByTag("ContentFrag");
if (frag != null) {
    frag.refresh();
}

これを達成する方法はありますか、それとも大量の if ステートメントを書く必要がありますか?

ありがとう

4

3 に答える 3

2

解決策は、refresh() メソッドを持つ RefreshableFragment という名前の親クラスを作成することです。

public class RefreshableFragment extends Fragment {

public void refresh();
}

すべてのフラグメント クラスは、このクラスを拡張する必要があります。

public class ExampleFragment1 extends RefreshableFragment {

    public void refresh() {
       // implementation
    }

}

次に、更新されたフラグメントをコードで使用できます。

FragmentManager fm = getSupportFragmentManager();
RefreshableFragment frag = (RefreshableFragment)fm.findFragmentByTag("ContentFrag");
if (frag != null) {
    frag.refresh();
}
于 2013-05-29T12:04:57.597 に答える