片段调用的活动方法如下:
MyActivity method = (MyActivity) getActivity ();
method.MyMethod ("string");
以下是活动中的内容:
public void MyMethod (String var)
{
Toast.makeText (MyActivity.this,
var,Toast.LENGTH_SHORT).show();
}
问题。如何在片段活动上调用方法? (即,反向)
答案 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");