对于Android,我有一个名为AFrag的类,我想知道是否有可能创建子类可访问的受保护字段(ex.BFrag),然后超类可以访问子类的引用分配到受保护的领域。
public class AFrag extends Fragment
{
protected EditText someEt;...
}
public class BFrag extends AFrag
{
@Override
onCreateView()
{
someEt = (EditText) rootView.findViewById(R.id.EditTextinBFragXml);...
}
}
BFrag作为childFragment加载到AFrag中。当我在AFrag中访问变量时,像someEt.getText()会抛出NullPointerException。我的问题是对BFrag的xml的引用是否存在于AFrag中?
我的用例是我有多个动态加载的片段,它们有自己独特的UI EditText视图集,我希望有一个单独的父片段,它托管“Save”按钮,可以在所有视图上调用getText()在每个孩子的碎片中。
答案 0 :(得分:1)
当受保护变量位于同一个包中时,可以在子类中访问它。如果BFrag位于不同的包中,则无法访问子类中的超类受保护变量。
答案 1 :(得分:0)
在BFrag
中rootView
是当前片段视图,而不是AFrag
的rootView
因此,您将获得NullPointerException
,因为在BFRag
中,someEt
不存在
但就变量而言,您将可以参考。事实上你的超级类应存在于应用程序内存中