android如何在xml中引用内部类View,静态内部类view
比如在类com.example.ClassA中定义了一个类ViewB,那么怎么样在xml中引用ViewB呢?
首先要注意的是ViewB定义的时候,必须定义成静态的,就是public static ViewB
1.假设ViewB 继承自View,那么在xml中可以这样定义(ClassA和ViewB之间是"$",不是".")
<View
class="com.example.ClassA$ViewB"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ViewGroup
class="com.example.ClassA$ViewB"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- ViewGroup内部的一些控件,比如button之类的 -->
</ViewGroup>
<View (这个红色是不对的,应该是view,第一个v应该是小写的,我写成大写的,一直报下面的错误)
class="com.example.ClassA$ViewB"
android:layout_width="match_parent"
android:layout_height="match_parent" />
java.lang.ClassCastException: android.view.View cannot be cast to com.voice.VoiceFragment$AnimationView
E/AndroidRuntime( 3543): at com.voice.VoiceFragment.initLayout(VoiceFragment.java:176)
E/AndroidRuntime( 3543): at com.voice.VoiceFragment.onCreate(VoiceFragment.java:106)
E/AndroidRuntime( 3543): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:796)
E/AndroidRuntime( 3543): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1035)
E/AndroidRuntime( 3543): at android.app.BackStackRecord.run(BackStackRecord.java:635)
E/AndroidRuntime( 3543): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1397)
E/AndroidRuntime( 3543): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
E/AndroidRuntime( 3543): at android.os.Handler.handleCallback(Handler.java:615)
E/AndroidRuntime( 3543): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 3543): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 3543): at android.app.ActivityThread.main(ActivityThread.java:4881)
E/AndroidRuntime( 3543): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 3543): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 3543): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
E/AndroidRuntime( 3543): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
E/AndroidRuntime( 3543): at dalvik.system.NativeStart.main(Native Method)