如何将ImageButton自定义类转换为ImageButton

时间:2015-02-10 12:33:43

标签: android android-imagebutton

我使用类java来自定义圆形图像按钮。现在我想将它转换为ImageButton。但是给我错误ClassCastException。我需要帮助 ! 如果你有决心请给我。 感谢。

我用

rootView.findViewById(R.id.btnPlay).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });

工作!但我想要ImageButton。

Java代码:

ImageButton btnPlay = (ImageButton) rootView.findViewById(R.id.btnPlay);
        btnPlay.setImageResource(R.drawable.ic_pause1);

代码XML:

<android.tadev.blogradio.support.CircleButton
            android:id="@+id/btnPlay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:contentDescription="@string/clear"
            android:src="@drawable/ic_play1" />

logcat的

02-10 12:19:33.798: E/AndroidRuntime(1377): FATAL EXCEPTION: main
02-10 12:19:33.798: E/AndroidRuntime(1377): java.lang.ClassCastException: android.tadev.blogradio.support.CircleButton cannot be cast to android.widget.ImageButton
02-10 12:19:33.798: E/AndroidRuntime(1377):     at android.tadev.blogradio.main.PlayBlog.onCreateView(PlayBlog.java:91)
02-10 12:19:33.798: E/AndroidRuntime(1377):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
02-10 12:19:33.798: E/AndroidRuntime(1377):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
02-10 12:19:33.798: E/AndroidRuntime(1377):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
02-10 12:19:33.798: E/AndroidRuntime(1377):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
02-10 12:19:33.798: E/AndroidRuntime(1377):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)

2 个答案:

答案 0 :(得分:1)

不要将对象转换为ImageButton,而是使用CircleButton

只要您的CircleButton自定义视图扩展了ImageButton,ImageButton的所有功能都将存在。

使用以下内容。

CircleButton btnPlay = (CircleButton) rootView.findViewById(R.id.btnPlay);
btnPlay.setImageResource(R.drawable.ic_pause1);

答案 1 :(得分:0)

失败的唯一原因是CircleButton不扩展ImageButton。否则你不会得到这个错误。仔细检查您正在扩展的ImageButton的确切包名称以及要转换的那个。你错过了一些东西。