如何从主要活动调用片段方法

时间:2016-03-02 12:31:52

标签: java android android-fragments android-activity fragmentmanager

我在片段类中有方法。我想从主要活动中调用该方法,但我不想使用FragmentById(或)FragmentByTag。

我的片段方法:

public void setItemFromDrawer(String sourceTag, String destTag) {
    //dosomething
}

如何在不使用FragmentById(或)FragmentByTag的情况下从主要活动调用上述方法?

5 个答案:

答案 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)片段)。你的方法();

它的工作形式是我