-1

クラスのクラスキャスト例外が原因で致命的な例外が発生するという問題があります。私は少し調査を行い、これを見つけました:

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

        }
4

2 に答える 2

0

これは、キャストの 1 つが aを(ImageView)にキャストしようとすることを意味しますが、これは間違っています。TextViewImageView

両方とも から継承しandroid.view.Viewます (したがって、両方とも にキャストできますView) が、一方を他方にキャストすることはできません。

于 2013-09-19T15:57:31.577 に答える
0

あなたのコードにはコンテキストがないため、最初の 2 つの仮定は次のとおりです。

  1. あなたのコードは AsyncTask からのもののようですね。
  2. AsyncTask を内部クラスとして使用していますね。(そうしないと、 を呼び出すことができないためsetContentView()

アクティビティのメソッドでsetContentView()既に呼び出していると思います。onCreate()2 回呼び出す必要はありません (また、AsyncTask 内で向きの変更を処理するのはちょっと間違っています)。

setProgressImgView()5 つの ImageViews をメンバー変数として取得し、再度呼び出すことなくこれらの変数を内部で使用する必要がありますsetContentView()

于 2013-09-19T15:57:54.733 に答える