2013-09-19 4 views
-1

У меня возникла проблема, когда я получаю фатальное исключение из-за исключения класса classcast. Я сделал несколько исследований, и нашел это:Fatal Exception - java.lang.ClassCastException: android.widget.TextView

http://docs.oracle.com/javase/7/docs/api/java/lang/ClassCastException.html

Однако это мой первый раз работаю в такой вопрос - и я не знаю точно, как она может быть решена.

09-19 15:41:48.711: E/AndroidRuntime(430): FATAL EXCEPTION: main 
09-19 15:41:48.711: E/AndroidRuntime(430): java.lang.ClassCastException: android.widget.TextView 
09-19 15:41:48.711: E/AndroidRuntime(430): at com.project.example.ssettings.UpdateActivity$NetworkTask.setProgressImgView(UpdateActivity.java:365) 
09-19 15:41:48.711: E/AndroidRuntime(430): at com.project.example.ssettings.UpdateActivity$NetworkTask.onProgressUpdate(UpdateActivity.java:352) 
09-19 15:41:48.711: E/AndroidRuntime(430): at com.project.example.ssettings.UpdateActivity$NetworkTask.onProgressUpdate(UpdateActivity.java:1) 
09-19 15:41:48.711: E/AndroidRuntime(430): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:432) 
09-19 15:41:48.711: E/AndroidRuntime(430): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-19 15:41:48.711: E/AndroidRuntime(430): at android.os.Looper.loop(Looper.java:123) 
09-19 15:41:48.711: E/AndroidRuntime(430): at android.app.ActivityThread.main(ActivityThread.java:3683) 
09-19 15:41:48.711: E/AndroidRuntime(430): at java.lang.reflect.Method.invokeNative(Native Method) 
09-19 15:41:48.711: E/AndroidRuntime(430): at java.lang.reflect.Method.invoke(Method.java:507) 
09-19 15:41:48.711: E/AndroidRuntime(430): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
09-19 15:41:48.711: E/AndroidRuntime(430): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
09-19 15:41:48.711: E/AndroidRuntime(430): at dalvik.system.NativeStart.main(Native Method) 

Код:

@Override 
     protected void onProgressUpdate(Integer... progress) { 
      // Call function to update image view 
      setProgressImgView(progress[0], progress[1], progress[2], 
        progress[3], progress[4]); 
     } 

     private void setProgressImgView(Integer imgViewId1, Integer imgViewId2, 
       Integer imgViewId3, Integer imgViewId4, Integer imgViewId5) { 
      // update image view with the updating dots 
      // Reset view layout in case orientation while updating 
      setContentView(R.layout.updating); 
      mProgressImageview1 = (ImageView) findViewById(R.id.loading_empty1); 
      mProgressImageview2 = (ImageView) findViewById(R.id.loading_empty2); 
      mProgressImageview3 = (ImageView) findViewById(R.id.loading_empty3); 
      mProgressImageview4 = (ImageView) findViewById(R.id.loading_empty4); 
      mProgressImageview5 = (ImageView) findViewById(R.id.loading_empty5); 
      mProgressImageview1.setImageResource(imgViewId1); 
      mProgressImageview2.setImageResource(imgViewId2); 
      mProgressImageview3.setImageResource(imgViewId3); 
      mProgressImageview4.setImageResource(imgViewId4); 
      mProgressImageview5.setImageResource(imgViewId5); 

     } 
+0

Пожалуйста, разместите свой файл макета –

+0

, вы должны лишить изображение или кнопку изображения или что-то еще для вашего текстового вида. вместо этого литой (TextView) – khubaib

ответ

0

Первые два предположения я сделал, потому что ваш код без контекста:

  1. Это выглядит как ваш код от AsyncTask, верно?
  2. Вы используете AsyncTask как внутренний класс, не так ли? (Потому что в противном случае вы не должны быть в состоянии назвать setContentView())

Я предполагаю, что вы звоните setContentView() уже в вашем onCreate() методы деятельности. Нет необходимости вызывать его дважды (и обработка изменений ориентации внутри AsyncTask является неправильной).

Вы должны получить свои 5 ImageViews в качестве переменных-члена и просто использовать эти переменные внутри своего setProgressImgView(), не вызвав снова setContentView().

0

Это просто означает, что один из ваших (ImageView) отливок пытается бросить TextView в ImageView, что неправильно.

Оба наследуются от android.view.View (и поэтому оба могут быть отлиты в View), но нельзя вставлять в другой.

Смежные вопросы