如何在片段活动上调用方法?

时间:2014-08-09 20:15:52

标签: java android android-activity fragment

片段调用的活动方法如下:

MyActivity method = (MyActivity) getActivity (); 
method.MyMethod ("string");

以下是活动中的内容:

public void MyMethod (String var) 
{         
    Toast.makeText (MyActivity.this,                  
        var,Toast.LENGTH_SHORT).show(); 
} 

问题。如何在片段活动上调用方法? (即,反向)

3 个答案:

答案 0 :(得分:0)

您需要实例化片段(获取片段的实例),然后调用该方法。

答案 1 :(得分:0)

使用Activity的FragmentManager获取片段的活动实例,并照常继续。

例如:

MyFragment.java:

public void FragmentMethod() {
    doSomethingInFragment();
}

Activity.java:

public void onCreate() {
    FragmentManager fragManager = getSupportFragmentManager();
    MyFragment fragment = (MyFragment)fragManager.getFragments().get(0);
    fragment.FragmentMethod();
}

你会注意到我使用getFragments().get(0)检索了片段的实例,它引用了FragmentManager的后栈中的第一个片段。如果您只有一个片段,则可以,否则您可以使用getFragment(Bundle, String)方法。

答案 2 :(得分:0)

如果我理解正确,为什么不在片段中创建公共方法并只调用它?

public class MyFragment extends Fragment{
...
       public void myMethod (String var){         
             Toast.makeText (getActivity(),var,Toast.LENGTH_SHORT).show(); 
       } 
}

在你的活动中:

MyFragment fragment = new MyFragment();
...
getSupportFragmentManager()
        .beginTransaction()
        .add(R.id.content_frame_layout, fragment);
fragment.myMethod("your string");