我有一个基类片段(如下所示)。我在3个其他片段类中扩展了这个类,每个片段类共享相同的EditText
,需要在这3个片段中进行访问。出于这个原因,我在基类中设置了EditText
变量(所以我不需要调用它3次,每个片段一次)。
此变量应该是public
还是应该是private
并设置了getter方法?为什么呢?
这是我的基类片段:
public abstract class BaseFragment extends Fragment {
public EditText editText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(getFragmentLayout(), container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
editText = (EditText) view.findViewById(R.id.editText);
}
protected abstract int getFragmentLayout();
}
答案 0 :(得分:0)
如果您只是从BaseFragment
及其子类访问它,则可以是Protected
。这将限制只访问自身和扩展它的类。
protected EditText editText;
有关辅助功能的更多详细信息,请参阅this document。
答案 1 :(得分:0)
如果def search(animalList, x):
print("What " + x +" are you searching for? ")
searchFor = raw_input("Answer: ")
i = 0
for djur in animalList:
if animalList[i].x == searchFor:
returnVal = "In the park we have: ", animalList[i]
break
else:
i += 1
returnVal = "No match"
return returnVal
类的子类将使用editText
,则需要将其标记为BaseFragment
。
Here是javadoc,这就是说:
protected修饰符指定只能访问该成员 在它自己的包中(与package-private一样),另外,通过 另一个包中其类的子类。
通过这样做,子类不需要使用protected
和getters
方法来访问此属性。他们将能够使用它,就像它只在那些类中定义一样。但是,对于不在setters
包中或未展开BaseFragment
的任何类,此属性将为BaseFragment
。