«Невозможно привести TextView к ToggleButton», но это ToggleButton - PullRequest
1 голос
/ 16 декабря 2011

Я очень новичок в разработке для Android, поэтому заранее прошу прощения, если это "нубский" вопрос.

Используя RelativeLayout, у меня есть ToggleButton с идентификатором reminderToggle:

<ToggleButton
    android:id="@+id/reminderToggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/reminderDesc"
    android:layout_alignBottom="@+id/reminderDesc"
    android:layout_toRightOf="@+id/imageView1"
    android:text="ToggleButton" />

Я использую:

ToggleButton reminderToggle = (ToggleButton)findViewById(R.id.reminderToggle);

, затем позже:

if(reminderToggle.isChecked()) {

внутри кнопки onClick слушатель, внутри onCreate, чтобы увидеть ToggleButtonпроверено.Это все работало нормально.Я не знаю, что я сделал, но теперь приложение вылетает при нажатии кнопки.В LogCat` я вижу

FATAL EXCEPTION: main
java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ToggleButton
at nz.co.kwiius.park.ParkActivity$4.onClick(ParkActivity.java:139)

Строка 139:

ToggleButton reminderToggle = (ToggleButton)findViewById(R.id.reminderToggle);

Как вы можете видеть в XML, RemderToggle - это ToggleButton.Так о чем весь этот шум?:)

Заранее спасибо, JJ56

PS: есть только одна вещь с идентификатором напоминающего напоминания - это ToggleButton

Ответы [ 2 ]

7 голосов
/ 16 декабря 2011

Очистите и восстановите его, чувак. Также всегда проверяйте сборку автоматически, чтобы избежать подобных проблем.

0 голосов
/ 16 декабря 2011

Если вы определили TextView до ToggleButton, и оба определены с одним и тем же идентификатором, тогда в том случае, если вы попытаетесь получить нажатие кнопки переключения, вы получите исключение приведения класса, потому что1005 * findViewById () вернет вам первый элемент, определенный с использованием того же идентификатора в этом xml .В следующем XML первый элемент, определенный с идентификатором напоминанием, является TextView.Так что вы не можете получить ToggleButton, используя этот идентификатор

ToggleButton reminderToggle = (ToggleButton)findViewById(R.id.reminderToggle);// will result you classcast exception for the following xml

XML

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" 
        android:id="@+id/reminderToggle" />"
    <ToggleButton
    android:id="@+id/reminderToggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"

    android:text="ToggleButton" />
...