Невозможно преобразовать представление в коммутатор

#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 .