无法再转换为LayerDrawable(在升级v7之后)

nat*_*rio 3 android android-appcompat android-support-library

我正在使用支持库的最新版本,22.1.1.

我曾经喜欢:

mRatingBar = (RatingBar) getActivity().findViewById(R.id.rating);
LayerDrawable layer = (LayerDrawable) mRatingBar.getProgressDrawable();
Run Code Online (Sandbox Code Playgroud)

但升级后,它在第2行遇到崩溃ClassCastException:

android.support.v4.graphics.drawable.DrawableWrapperHoneycomb cannot be cast to android.graphics.drawable.LayerDrawable
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1138)
            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:740)
            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1501)
            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:458)
            at android.os.Handler.handleCallback(Handler.java:725)
Run Code Online (Sandbox Code Playgroud)

我在Android 4.2.2上测试.任何提示和解决方法?

小智 5

我遇到了同样的问题.我搜索它,发现,如果我们写

<RatingBar
android:layout_width="wrap_content"
android:numStars="5"
android:layout_height="wrap_content"
/>
Run Code Online (Sandbox Code Playgroud)

在XML文件中.比,Android默认将RatingBar转换为android.support.v7.widget.AppCompatRatingBar而不是android.widget.RatingBar.


只需使用以下代码修改您的代码,问题就会得到解决.

<android.widget.RatingBar
    android:layout_width="wrap_content"
    android:numStars="5"
    android:layout_height="wrap_content"
    />
Run Code Online (Sandbox Code Playgroud)