133

Android Fragments Dev GuidefindFragmentById()で、「アクティビティは、またはを使用して、FragmentManagerからフラグメントへの参照を取得することにより、フラグメント内のメソッドを呼び出すことができます」とわかりfindFragmentByTag()ます。

次の例は、フラグメント参照を取得する方法を示していますが、フラグメント内の特定のメソッドを呼び出す方法は示していません。

誰かがこれを行う方法の例を与えることができますか?親アクティビティからフラグメント内の特定のメソッドを呼び出したいと思います。ありがとう。

4

13 に答える 13

223

単純すぎるため、質問を正確に取得できません。

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.<specific_function_name>(); 
于 2012-06-05T18:51:48.673 に答える
80

「import android.app.Fragment;」を使用している場合 次に、次のいずれかを使用します。

1)

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment); 
fragment.specific_function_name(); 

R.id.example_fragment は、xml レイアウト内の FrameLayout id である可能性が最も高い場所です。また

2)

ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentByTag(“FragTagName”); 
fragment.specific_function_name(); 

FragTagName は、実行時に指定した名前です。

TabHost mTabHost.newTabSpec(“FragTagName”)

「import android.support.v4.app.Fragment;」を使用している場合 次に、次のいずれかを使用します。

1)

ExampleFragment fragment = (ExampleFragment) getSupportFragmentManager().findFragmentById(R.id.example_fragment); 
fragment.specific_function_name(); 

また

2)

ExampleFragment fragment = (ExampleFragment) getSupportFragmentManager().findFragmentByTag(“FragTagName”); 
fragment.specific_function_name(); 
于 2014-08-20T23:51:16.877 に答える
9

サポート ライブラリを使用している場合は、次のようにします。

FragmentManager manager = getSupportFragmentManager();
Fragment fragment = manager.findFragmentById(R.id.my_fragment);
fragment.myMethod();
于 2014-06-11T23:26:54.590 に答える
5
  1. サポート ライブラリ Fragment を使用していない場合は、次の手順を実行します。

((FragmentName) getFragmentManager().findFragmentById(R.id.fragment_id)).methodName();


2. サポート ライブラリ Fragment を使用している場合は、次の手順を実行します。

((FragmentName) getSupportFragmentManager().findFragmentById(R.id.fragment_id)).methodName();

于 2015-12-14T07:22:51.693 に答える
4

フラグメントからアクティビティへ:

((YourActivityClassName)getActivity()).yourPublicMethod();

アクティビティからフラグメントへ:

FragmentManager fm = getSupportFragmentManager();

//if you added fragment via layout xml
YourFragmentClass fragment = 
(YourFragmentClass)fm.findFragmentById(R.id.your_fragment_id);
fragment.yourPublicMethod();

コードでフラグメントを追加し、フラグメントを追加したときにタグ文字列を使用した場合は、代わりにfindFragmentByTagを使用します。

YourFragmentClass fragment = (YourFragmentClass)fm.findFragmentByTag("yourTag");
于 2018-09-08T06:26:47.190 に答える
0
((HomesFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_container)).filterValidation();
于 2020-06-11T07:51:24.717 に答える