Исключение приведения класса в FrameLayout, когда я пытаюсь изменить порядок представлений в макете xml?

Вот мой файл макета

 <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="3">

    <WebView
        android:id="@+id/document_id"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

   <ProgressBar
        android:id="@+id/load_document_progress"
        android:layout_width="30dp"
        android:layout_gravity="center"
        android:layout_height="30dp"
        android:visibility="invisible"/>

    <Button
        android:id="@+id/start_btn"
        android:layout_width="90dp"
        android:layout_height="30dp"
        android:text="@string/start_btn_txt"
        android:textStyle="bold"
        android:textColor="#000000"
        android:layout_gravity="center"
        android:visibility="invisible"
        android:onClick="updatePresentationId"
        android:background="@drawable/border_radius"/>



</FrameLayout>

Это работает. Но когда мне нужно изменить порядок элементов. Я получу ClassCastException. Вот моя трассировка logcat.

А вот мой код Activity

Я получил ошибку в 1-й строке этого метода. Я меняю видимость представлений в onPreExecute и onPostExecute() Asyntask. Пожалуйста, помогите, что я сделал неправильно здесь?

public void getAllViews()
{
    **progressBar=(ProgressBar)findViewById(R.id.load_document_progress);**
    startButton=(Button)findViewById(R.id.start_btn);
    webView=(WebView)findViewById(R.id.document_id);
    userName=(TextView)findViewById(R.id.userNameTv);
    presentationName=(TextView)findViewById(R.id.presentation_name);
}

когда вы меняете порядок виджетов. Очистите свой проект и соберите его снова.


person Dinesh    schedule 24.12.2012    source источник
comment
progressBar=(ProgressBar)findViewById(R.id.load_document_progress); startButton=(Кнопка)findViewById(R.id.start_btn); В декларации нет ничего плохого. Это была проблема с затмением. Когда я очищаю, ошибка проекта исчезла.   -  person ρяσѕρєя K    schedule 24.12.2012
comment
Что вы имеете в виду под изменением порядка? Изменить макет xml между запусками или изменить его во время работы приложения?   -  person Dinesh    schedule 24.12.2012
comment
Спасибо - это помогло :)   -  person Barak    schedule 24.12.2012


Ответы (1)


В меню Eclipse выберите Проект ---> Очистить

_1_ означает, что вы пытаетесь привести Button к ProgressBar где-то в коде, поэтому проверьте объявление кнопки startButton

person TNR    schedule 24.12.2012
comment
Невероятный. Кто мог подумать? Спасибо! - person nithinreddy; 22.08.2014
comment
Это также проблема в Android Studio! И решение гениальное. - person MaxK; 09.10.2014
comment
12-24 18:33:58.131: E/AndroidRuntime(2089): НЕИСПРАВНОЕ ИСКЛЮЧЕНИЕ: main 12-24 18:33:58.131: E/AndroidRuntime(2089): java.lang.RuntimeException: невозможно запустить активность ComponentInfo{com. zoho.showmote/com.zoho.showmote.android.activity.ShowDocuments}: java.lang.ClassCastException: android.widget.Button нельзя преобразовать в android.widget.ProgressBar 12–24 18:33:58.131: E/AndroidRuntime( 2089): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956) 12-24 18:33:58.131: E/AndroidRuntime(2089): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 12 -24 18:33:58.131: E/AndroidRuntime(2089): в android.app.ActivityThread.access$600(ActivityThread.java:123) 12-24 18:33:58.131: E/AndroidRuntime(2089): в android. app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 12-24 18:33:58.131: E/AndroidRuntime(2089): в android.os.Handler.dispatchMessage(Handler.java:99) 12-24 18: 33:58.131: E/AndroidRun время (2089): в android.os.Looper.loop(Looper.java:137) 12-24 18:33:58.131: E/AndroidRuntime(2089): в android.app.ActivityThread.main(ActivityThread.java:4424 ) 12-24 18:33:58.131: E/AndroidRuntime(2089): в java.lang.reflect.Method.invokeNative(собственный метод) 12-24 18:33:58.131: E/AndroidRuntime(2089): в java. lang.reflect.Method.invoke(Method.java:511) 12-24 18:33:58.131: E/AndroidRuntime(2089): в com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784 ) 12-24 18:33:58.131: E/AndroidRuntime(2089): в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 12-24 18:33:58.131: E/AndroidRuntime(2089) ): at dalvik.system.NativeStart.main(собственный метод) 12-24 18:33:58.131: E/AndroidRuntime(2089): вызвано: java.lang.ClassCastException: android.widget.Button нельзя преобразовать в android. widget.ProgressBar 12-24 18:33:58.131: E/AndroidRuntime(2089): на com.zoho.showmote.android.activity.ShowDocuments.getAllView s(ShowDocuments.java:50) 12-24 18:33:58.131: E/AndroidRuntime(2089): at com.zoho.showmote.android.activity.ShowDocuments.onCreate(ShowDocuments.java:39) 12-24 18: 33:58.131: E/AndroidRuntime(2089): в android.app.Activity.performCreate(Activity.java:4465) 12-24 18:33:58.131: E/AndroidRuntime(2089): в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1049) 12–24 18:33:58.131: E/AndroidRuntime (2089): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 12–24 18:33:58. 131: E/AndroidRuntime(2089): ... еще 11 - person andMarkus; 04.02.2016