2014-10-18 87 views
0

最新這兩個碼之間之探源:窗口小部件的聲明。在onCreateView中還是外部?

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

是的,它確實很重要。 對於第一種情況,您也可以將mTitleField與其他方法一起使用(儘管您必須爲其他方法單獨安裝它)。 對於第二種情況,您有機器人在onCreateView()內聲明和實例化mTitleField,因此只能在該方法內訪問它。

這是Java中全局和局部變量的基本概念。

0

偏離過程當然重要,我假設第一個案例mTitleField在全球範圍內被宣佈爲。在這種情況下,您可以使用該特定類別中的任何其他方法訪問mTitleField作爲EditText

例:假設上的任何按鈕的點擊你需要的文字在EditText進入,那麼你可以簡單地做這樣的

String someString = mTitleField.getText().toString(); 

在第二種情況下mTitleField本地聲明。在這種情況下,onCreateView(...)之外,您不能訪問mTitleFieldmTitleField的範圍在onCreateView(...)

例:假設你需要的文字在EditText輸入任何按鈕的點擊,那麼你必須聲明EditText再次裏面onClick方法這樣

EditText mTitleField = (EditText)v.findViewById(R.id.crime_title); 
String someString = mTitleField.getText().toString(); 
0

不同的是,在第一種方法是全局聲明所以這樣做的好處是你可以在整個活動中的任何地方使用全局變量。而對於第二種方法,它被用作局部變量,你可以在活動中用於特定的地方。

局部變量在塊的範圍內定義。

全局變量是一個可以在多個作用域中訪問的變量。

相關問題