我试图调用此函数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();
它使我的应用程序在我调用时停止工作
任何帮助?
答案 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的回答