2013-01-16 71 views

回答

55

是,通过调用getActivity与父活动投它来访问其方法或变量((ParentActivityName)getActivity())

试试这一个其右。

ParentActivityName是父类的名字

+0

如果我们不知道名字怎么办?例如:我正在制作sdk,它包含所有片段。我不能让sdk用户重新命名他/她的活动。那么如何在不知道名字的情况下获得参考? – Kay

+0

您想如何使用该参考? – DcodeChef

+1

我明白了。我的使用案例是在库中制作n个片段并提供给商家。我不知道他们会使用这些片段的活动。看起来制作一个界面,在活动中覆盖它并从活动中获取回调似乎是最佳做法,并且在我的场景中非常有用。 – Kay

7

最正确的方法是让你Activity实施Interface并使用监听器。这样Fragment不与任何特定的Activity保持可重用。进入Fragment

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 

    // This makes sure that the container activity has implemented 
    // the callback interface. If not, it throws an exception 
    try { 
     mCallback = (OnHeadlineSelectedListener) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(activity.toString() 
       + " must implement OnHeadlineSelectedListener"); 
    } 
} 

这样,你让Activity听片段,当它连接到它。

参见:

0

使用getActivity()方法简单的调用父活动。

CardView cardView = (CardView) getActivity().findView(R.id.your_view);