我在片段类中有一个方法。我想从主活动中调用该方法,但我不想使用FragmentById(或)FragmentByTag。
我的片段方法:
public void setItemFromDrawer(String sourceTag, String destTag) {
//dosomething
}
如何在不使用FragmentById(或)FragmentByTag的情况下从主活动调用上面的方法?
我在片段类中有一个方法。我想从主活动中调用该方法,但我不想使用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.
setListener(myFragment);
的监听器????? - ekashking((YourFragmentClass) fragment).Yourmethod();
YourFragmentClass fragment = new YourFragmentClass();
((YourFragmentClass) fragment).yourmethod();
在 Activity 中,加载 fragment 的代码应该像这样:
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");
((YourFragment类) fragment).你的方法();
对我有用