我有一個在android的開關集合;讓我們給他們打電話......爲什麼我的數組視圖返回null?
Switch one;
Switch two;
Switch three;
Switch four;
Switch five;
我也有一個包含這些視圖的數組。
Switch[] switchArray = {one, two, three, four, five};
然後,在我的onCreateView()方法中;我使用findViewById()分配所有這些開關。
one = (Switch) findViewById(R.id.switchOne);
two = (Switch) findViewById(R.id.switchTwo);
three = (Switch) findViewById(R.id.switchThree);
four = (Switch) findViewById(R.id.switchFour);
five = (Switch) findViewById(R.id.switchFive);
現在;當我創建一個for循環檢查,如果該數組爲null:
for(int i = 0; i<switchArray.length; i++){
if(switchArray[i] == null){
Log.d(TAG, "Array is null at:" + i);
}
}
我得到以下的logcat:
Array is null at: 1
Array is null at: 2
Array is null at: 3
Array is null at: 4
Array is null at: 5
而且我不確定,爲什麼這些變量返回null,如果我試圖在onCreate中實例化它們...如果我也嘗試在onCreate之前實例化它們(在任何方法之前的類頭文件中);我仍然得到同樣的錯誤。
希望問題清楚。
編輯1:FULL ONCREATEVIEW方法
public View onCreateView(LayoutInflater viewInflation, ViewGroup container,
Bundle SavedInstantState) {
superContext = getActivity().getApplicationContext();
digitalfragmentview = viewInflation.inflate(
R.layout.digitalfragment_page, container, false);
digitalIO0Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio0mode);
digitalIO1Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio1mode);
digitalIO2Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio2mode);
digitalIO3Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio3mode);
digitalIO4Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio4mode);
digitalIO5Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio5mode);
digitalIO6Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio6mode);
digitalIO7Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio7mode);
digitalIO8Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio8mode);
digitalIO9Mode = (Switch) digitalfragmentview
.findViewById(R.id.digitalio9mode);
// sets the listener for the mode switches
for (int i = 0; i < digitalIOModeSwitchArray.length; i++) {
if (digitalIOModeSwitchArray[i] == null) {
Log.d(TAG, "Array is null at:" + i);
}
}
return digitalfragmentview;
}
你什麼時候實例化switchArray?你需要在你執行「findViewById」調用之後實例化它。 – dymmeh
switchArray在onCreateView()之前被實例化。在所有其他類變量的類的頂部。 – Tukajo
在我的最新版本; digitalIO0Mode相當於Switch One;等等...... – Tukajo