Java 如何对活动片段调用方法?
片段调用的活动方法如下:Java 如何对活动片段调用方法?,java,android,android-activity,fragment,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(); } 以下是它在活动中的外观:
MyActivity method = (MyActivity) getActivity ();
method.MyMethod ("string");
public void MyMethod (String var)
{
Toast.makeText (MyActivity.this,
var,Toast.LENGTH_SHORT).show();
}
以下是它在活动中的外观:
MyActivity method = (MyActivity) getActivity ();
method.MyMethod ("string");
public void MyMethod (String var)
{
Toast.makeText (MyActivity.this,
var,Toast.LENGTH_SHORT).show();
}
问题。如何对活动片段调用方法?(即,反向)您需要实例化片段(获取片段的实例),然后调用该方法。使用活动的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)
方法。如果我理解正确,为什么不在fragment中创建public方法并调用它呢?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");
重复?如果您使用的是v4支持库,请尝试调用getSupportFragmentManager()而不是ReadOK,这意味着您使用的是来自常规API的片段。我强烈建议使用v4片段,因为它们受到更多设备的支持。获取android-support-v4.jar库文件,将其放在libs目录中,并将所有片段引用从android.app替换为android.support.v4.app。这通常是推荐的,也将使解决方案能够工作:)我使用SectionsPagerAdapter。当您选择创建片段的特定部分时:returnnewloadobjects();但如果我这样做:LoadObjects frag=newloadobjects();FragmentTransaction=getFragmentManager()。BeginTransaction();transaction.add(R.id.fragment_容器,frag,“listFragment”);transaction.commit();返回碎片;应用程序关闭了您在libs文件夹中有android-support-v4.jar吗?如果没有,您需要下载它并将其放入libs文件夹中。尝试使用android SDK管理器下载最新的android-support-v4.jar,然后从
/extras/android/support/v4/android-support-v4.jar