基础片段类中的共享变量,公共还是私有?

时间:2017-03-18 16:36:08

标签: java android android-fragments

我有一个基类片段(如下所示)。我在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();
}

2 个答案:

答案 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一样),另外,通过   另一个包中其类的子类。

通过这样做,子类不需要使用protectedgetters方法来访问此属性。他们将能够使用它,就像它只在那些类中定义一样。但是,对于不在setters包中或未展开BaseFragment的任何类,此属性将为BaseFragment