フラグメントクラスにメソッドがあります。メインアクティビティからそのメソッドを呼び出したいが、FragmentById(または)FragmentByTagを使用したくない。
私のフラグメントメソッド:
public void setItemFromDrawer(String sourceTag, String destTag) {
//dosomething
}
FragmentById(または)FragmentByTagを使用せずにメインアクティビティから上記のメソッドを呼び出す方法は?
最初にインターフェースを作成します
public interface MyInterface
{
void myAction() ;
}
フラグメントはこのインターフェースを実装する必要があります。
public MyFragment extends Fragment implements MyInterface
アクティビティで、MyInterfaceタイプのフィールドを定義:
private MyInterface listener ;
public void setListener(MyInterface listener)
{
this.listener = listener ;
}
フラグメントを作成して追加する場合:
setListener(myFragment);
最後に、Fragmentメソッドを呼び出したいという条件が発生したら、次を呼び出します。
listener.myAction() ; // this will call the implementation in your MyFragment class.
フラグメントメソッドを呼び出すことを意味します
((YourFragmentClass) fragment).Yourmethod();
ser5466222で答えをよりよく説明するには:
YourFragmentClass fragment = new YourFragmentClass();
((YourFragmentClass) fragment).yourmethod();
アクティビティでは、フラグメントをロードする次のようなものを使用します。
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(container, fragment);
transaction.addToBackStack(null); // if you want to store transaction
transaction.commit();
currentFragment = fragment; // currentFragment is global Fragment variable
フラグメントのメソッドを呼び出す場所で次の行を使用します
currentFragment.setItemFromDrawer("sourceTag","destTag");