无法将视图转换为Switch

时间:2014-06-19 12:50:04

标签: java android casting switch-statement

我需要做一件非常简单的事情,但我一直都会遇到错误。我有多个开关,每个开关都有一个不同的ID。每次我使用(Switch)findViewById(),它都会给我以下错误:无法将视图转换为Switch。 s被定义为Switch。 我做了一些研究,我试图清理我的项目并删除我的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 个答案:

答案 0 :(得分:0)

您的项目中有另一个Switch类,代码使用的是android.widget.Switch

如果其他Switch位于另一个包中,只需将导入更改为import android.widget.Switch

如果它位于同一个包中,您可以通过在代码中将Switch替换为android.widget.Switch来明确引用平台类。