这两个代码之间的差异是什么:
EditText mTitleField;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_crime, parent, false);
mTitleField = (EditText)v.findViewById(R.id.crime_title);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_crime, parent, false);
EditText mTitleField = (EditText)v.findViewById(R.id.crime_title);
}
第一个在onCreateView外部声明了Edittext变量,第二个在onCreateView中有声明。 在哪里声明它是否重要?
答案 0 :(得分:0)
是的,这很重要。 对于第一种情况,您也可以将mTitleField与其他方法一起使用(尽管您必须为其他方法单独实例化)。 对于第二种情况,你在onCreateView()中声明并实例化了mTitleField,因此只能在该方法内部访问它。
这是Java中全局变量和局部变量的基本概念。
答案 1 :(得分:0)
当然它确实很重要,我假设第一个案例mTitleField
在班级中被全局宣布为。在这种情况下,您可以在该特定类的任何其他方法中访问mTitleField
EditText
。
例如:假设点击任何按钮,您需要在EditText
输入文字,然后您就可以这样做了
String someString = mTitleField.getText().toString();
在第二种情况下,mTitleField
在本地声明。在onCreateView(...)
之外的情况下,您无法访问mTitleField
。 mTitleField
的范围位于onCreateView(...)
。
例如:假设点击任何按钮,您需要在EditText
输入文字,然后您必须在此EditText
方法中再次声明onClick
EditText mTitleField = (EditText)v.findViewById(R.id.crime_title);
String someString = mTitleField.getText().toString();
答案 2 :(得分:0)
区别在于,在First First中它全局声明,因此它的优点是你可以在整个活动中的任何地方使用全局变量。而对于Second方法,它可以用作局部变量,可以用于活动中的特定位置。
局部变量在块的范围内定义。
全局变量是可以在多个范围内访问的变量。