slidingDrawer克隆后改变layoutParams的height导致所有slidingDrawer的height都发生改变,而将其getLayoutParams的结果也克隆后却抛出异常,请高手指教,谢谢!急用……
代码如下:
public class MySlidingDrawer extends SlidingDrawer implements Cloneable {

public MySlidingDrawer(Context context, AttributeSet attrs) {
super(context, attrs);
} public Object clone(){
MySlidingDrawer mySD = null;
try {
mySD = (MySlidingDrawer) super.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return mySD;
} @Override
public LayoutParams getLayoutParams() {
LayoutParams layot = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
MyLayoutParams myLayoutParams = new MyLayoutParams(layot);
return (LayoutParams) myLayoutParams.clone();
}}
public  class MyLayoutParams extends LayoutParams implements Cloneable{
public MyLayoutParams(LayoutParams arg0) {
super(arg0);
// TODO Auto-generated constructor stub
} public MyLayoutParams clone() {
try {
return (MyLayoutParams)super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return null;
} }

解决方案 »

  1.   

    异常内容如下:
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980): java.lang.ClassCastException: com.foo.MyLayoutParams
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:355)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.View.measure(View.java:8171)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.View.measure(View.java:8171)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.View.measure(View.java:8171)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.View.measure(View.java:8171)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.View.measure(View.java:8171)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.os.Handler.dispatchMessage(Handler.java:99)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.os.Looper.loop(Looper.java:123)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at java.lang.reflect.Method.invokeNative(Native Method)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at java.lang.reflect.Method.invoke(Method.java:521)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    05-17 17:48:21.290: ERROR/AndroidRuntime(1980):     at dalvik.system.NativeStart.main(Native Method)