#java #android #casting #switch-statement
#java #Android #Кастинг #switch-statement
Вопрос:
Мне нужно сделать действительно простую вещь, но я продолжаю получать ошибки. У меня есть несколько переключателей, у каждого из которых свой идентификатор. Каждый раз, когда я использую (Switch)findViewById(), он выдает мне следующую ошибку: не удается преобразовать View в Switch. s определяется как коммутатор. Я провел некоторое исследование и попытался очистить свой проект и удалить свой R-файл, но он по-прежнему не работает.
protected void onCreate(Bundle savedInstanceState) {
...
switches = weekprogram.getSwitches(day); //returns an arraylist with switches
for (int j = 0; j < switches.size(); j ) {
switch (j) {
case 5:
b = (Button) findViewById(R.id.timeBOne);
s = (Switch) findViewById(R.id.switchOne);
break;
case 6:
b = (Button) findViewById(R.id.timeBTwo);
s = (Switch) findViewById(R.id.switchTwo);
break;
case 7:
b = (Button) findViewById(R.id.timeBThree);
s = (Switch) findViewById(R.id.switchThree);
break;
case 8:
b = (Button) findViewById(R.id.timeBFour);
s = (Switch) findViewById(R.id.switchFour);
break;
case 9:
b = (Button) findViewById(R.id.timeBFive);
s = (Switch) findViewById(R.id.switchFive);
break;
case 0:
b = (Button) findViewById(R.id.timeBSix);
s = (Switch) findViewById(R.id.switchSix);
break;
case 1:
b = (Button) findViewById(R.id.timeBseven);
s = (Switch) findViewById(R.id.switchSeven);
break;
case 2:
b = (Button) findViewById(R.id.timeBEight);
s = (Switch) findViewById(R.id.switchEight);
break;
case 3:
b = (Button) findViewById(R.id.timeBNine);
s = (Switch) findViewById(R.id.switchNine);
break;
case 4:
b = (Button) findViewById(R.id.timeBTen);
s = (Switch) findViewById(R.id.switchTen);
break;
}
...
}
XML-файл:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backgroundforapp"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.hti_thermostat.SelectedDay$PlaceholderFragment" >
<Button
android:id="@ id/timeBNine"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBTen"
android:layout_alignLeft="@ id/timeBTen"
android:text="09:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBEight"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBNine"
android:layout_alignLeft="@ id/timeBFive"
android:text="08:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton"/>
<Button
android:id="@ id/timeBseven"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBEight"
android:layout_alignLeft="@ id/timeBEight"
android:text="07:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBSix"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBseven"
android:layout_alignLeft="@ id/timeBseven"
android:text="06:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBTen"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_alignLeft="@ id/timeBEight"
android:layout_alignParentBottom="true"
android:layout_marginBottom="26dp"
android:text="10:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBFive"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_alignLeft="@ id/timeBFour"
android:layout_centerVertical="true"
android:text="05:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBFour"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBFive"
android:layout_alignLeft="@ id/timeBThree"
android:text="04:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBThree"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBFour"
android:layout_alignLeft="@ id/DayofWeek"
android:text="03:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBTwo"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBThree"
android:layout_alignLeft="@ id/timeBThree"
android:text="02:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton" />
<Button
android:id="@ id/timeBOne"
style="?android:attr/buttonStyleSmall"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_above="@ id/timeBTwo"
android:layout_alignLeft="@ id/DayofWeek"
android:text="01:30 AM"
android:textSize="13sp"
android:onClick="setTimeButton"/>
<TextView
android:id="@ id/DayofWeek"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@ id/timeBOne"
android:layout_centerHorizontal="true"
android:layout_marginBottom="15dp"
android:text="Monday"
android:textColor="#ECDFD5"
android:textSize="35sp" />
<ImageView
android:id="@ id/sunsD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignTop="@ id/timeBOne"
android:src="@drawable/sunshine" />
<ImageView
android:id="@ id/moonsD"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@ id/sunsD"
android:layout_alignTop="@ id/timeBSix"
android:src="@drawable/moon" />
<Switch
android:id="@ id/switchOne"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@ id/timeBOne" />
<Switch
android:id="@ id/switchTwo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@ id/switchOne"
android:layout_alignTop="@ id/timeBTwo" />
<Switch
android:id="@ id/switchThree"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@ id/timeBThree"
android:layout_alignLeft="@ id/switchTwo" />
<Switch
android:id="@ id/switchFour"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@ id/switchThree"
android:layout_below="@ id/timeBThree" />
<Switch
android:id="@ id/switchSix"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@ id/switchFive"
android:layout_alignTop="@ id/timeBSix" />
<Switch
android:id="@ id/switchSeven"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@ id/switchSix"
android:layout_below="@ id/timeBSix" />
<Switch
android:id="@ id/switchEight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@ id/timeBEight"
android:layout_alignLeft="@ id/switchSeven" />
<Switch
android:id="@ id/switchNine"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@ id/timeBNine"
android:layout_alignLeft="@ id/switchEight" />
<Switch
android:id="@ id/switchTen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@ id/timeBTen"
android:layout_alignLeft="@ id/switchNine" />
<Switch
android:id="@ id/switchFive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@ id/timeBFive"
android:layout_alignLeft="@ id/switchFour" />
Комментарии:
1. Где
s
определение переменной?2. Можете ли вы опубликовать свой XML-файл макета?
3. в классе, определенном как общедоступные коммутаторы
4. Нет проблем с кнопкой b, не так ли? Также опубликуйте свой xml
5. @Kartik У меня нет проблем с кнопкой b
Ответ №1:
В вашем проекте есть другой Switch
класс, и код использует его вместо android.widget.Switch
.
Если другой Switch
находится в другом пакете, просто измените импорт на import android.widget.Switch
.
Если он находится в том же пакете, вы можете явно ссылаться на класс платформы, заменив Switch
на android.widget.Switch
in code .