如何从另一个片段类调用函数

时间:2014-10-26 20:30:49

标签: android android-activity fragment overflow

我试图调用此函数public void arrowClick()

位于我的主要片段public class CounterMain extends Fragment implements View.OnClickListener{

片段扩展为android.support.v4.app.Fragment

我想从另一个Custmoe Dialog片段中调用此函数

public class CustmoeDialog extends DialogFragment {

我尝试了((CounterMain)getActivity()).arrowClick();

但我无法使用android.support.v4.app.Fragment cannot be cast to my.example.CounterMain

CounterMain x = new CounterMain(); x.arrowClick();

它使我的应用程序在我调用时停止工作

任何帮助?

2 个答案:

答案 0 :(得分:3)

您可以通过这种方式调用活动方法

((YourActivityClassName)getActivity()).yourPublicMethod();

以及您可以通过这种方式直接调用的活动

FragmentManager fm = getSupportFragmentManager();//if added by xml
YourFragmentClass fragment = (YourFragmentClass)fm.findFragmentById(R.id.your_fragment_id);
fragment.yourPublicMethod();

如果您通过代码添加片段并在添加片段时使用标记字符串,请改用findFragmentByTag:

YourFragmentClass fragment = (YourFragmentClass)fm.findFragmentByTag("yourTag");

答案 1 :(得分:0)

首先,你不能从ACTIVITY转换为FRAGMENT 但是要从全球活动转变为你的活动

或者创建INTERFACE并在ACTIVITY中实现它

然后将它从FRTIVMENT中从ACTIVITY转到INTERFACE

关于这个问题:

在这里以正确的方式查看如何实施

Basic Communication between two fragments

Entreco的回答