【问题标题】:Fatal Exception - java.lang.ClassCastException: android.widget.TextView致命异常 - java.lang.ClassCastException: android.widget.TextView
【发布时间】:2013-09-19 15:48:01
【问题描述】:

我遇到了一个问题,由于类类转换异常,我遇到了致命异常。我做了一些研究,发现了这个:

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);

        }

【问题讨论】:

  • 请发布您的布局文件
  • 您必须将图像视图或图像按钮或其他内容投射到您的文本视图中。而是强制转换 (TextView)

标签: java android casting fatal-error


【解决方案1】:

我做出的前两个假设是因为您的代码没有上下文:

  1. 看起来您的代码来自 AsyncTask,对吧?
  2. 您将 AsyncTask 用作内部类,对吗? (否则您将无法致电setContentView()

我猜你已经在活动的onCreate() 方法中调用了setContentView()。无需调用两次(在 AsyncTask 中处理方向变化有点错误)。

您应该将 5 个 ImageViews 作为成员变量,并在您的 setProgressImgView() 中使用这些变量,而无需再次调用 setContentView()

【讨论】:

    【解决方案2】:

    这只是意味着您的(ImageView) 铸件之一试图将TextView 转换为ImageView,这是错误的。

    两者都继承自android.view.View(因此都可以转换为View),但不能转换为另一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2019-05-08
      • 2023-04-10
      • 1970-01-01
      • 2012-06-26
      • 1970-01-01
      相关资源
      最近更新 更多