2011-12-16 4 views
1

Я очень новичок в разработке Android, поэтому заранее приступаю к обсуждению, если это вопрос «noobish».«Невозможно использовать TextView для ToggleButton», но это ToggleButton

Используя 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, чтобы увидеть Проверяется ggleButton. Все это прекрасно работает. Я не знаю, что я сделал, но теперь приложение падает, когда нажимается кнопка. В 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, reminderToggle является ToggleButton. Так в чем же вся эта суета? :)

Спасибо заранее, JJ56

PS: Там только одна вещь, с идентификатором reminderToggle, что это ToggleButton

+0

Post код на операцию, это поможет нам понять корень проблемы только OnCreate() должна быть хорошо. Еще одна вещь, которую вы можете попробовать, - это очистить ваш проект, он все равно может запускать старый код и как-то конфликтует. – JoxTraex

+1

Попробуйте очистить свой проект и перестроить. –

+0

Спасибо! Это сработало хорошо. Может ли один из вас, пожалуйста, повторить очистку и перестройку в качестве ответа, чтобы я мог принять его? :) – JJJollyjim

ответ

7

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

0

Если вы определили TextView до ToggleButton и оба определяются с таким же идентификатором, то в том случае, если вы пытаетесь получить ToggleButton УИ Виль получить исключение класс литых, потому что findViewById() вернет вас первый элемент, определенный с использованием того же идентификатора в этом xml. В следующем XML первый элемент, определенный с id reminderToggle, - 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" /> 
Смежные вопросы