我在片段类中有方法。我想从主要活动中调用该方法,但我不想使用FragmentById(或)FragmentByTag。
我的片段方法:
public void setItemFromDrawer(String sourceTag, String destTag) {
//dosomething
}
如何在不使用FragmentById(或)FragmentByTag的情况下从主要活动调用上述方法?
答案 0 :(得分:28)
首先创建一个界面
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方法的condtion时,只需调用:
listener.myAction() ; // this will call the implementation in your MyFragment class.
答案 1 :(得分:5)
这意味着你调用片段方法
((YourFragmentClass) fragment).Yourmethod();
答案 2 :(得分:2)
在Activity中使用加载片段的内容:
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");
答案 3 :(得分:2)
通过 user5466222 :
更好地解释答案YourFragmentClass fragment = new YourFragmentClass();
((YourFragmentClass) fragment).yourmethod();
答案 4 :(得分:-3)
((YourFragment Class)片段)。你的方法();
它的工作形式是我