2012-04-06 24 views
11
 setContentView(R.layout.main2); 

     out= new ArrayList<TextView>(); 
     llay =(RelativeLayout) findViewById(R.id.displayPoll); 

     RelativeLayout.LayoutParams lparams = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
     RelativeLayout.LayoutParams lparams1 = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 
     LayoutParams lpar = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     Log.v("my","rched"); 


     out.add(new TextView(this)); 
     out.get(0).setLayoutParams(lpar); 
     out.get(0).setId(1); 
     lparams1.addRule(RelativeLayout.ALIGN_BOTTOM,R.id.user_name); 
     llay.setLayoutParams(lparams1); 
     out.get(0).setText("Title "+0+"\n\n\n\n\n\n"); 
     my_poll.this.llay.addView(out.get(0)); 

      for (int i = 1; i < 3;i++)//mJsonArray.length(); i++) 
      { 
       out.add(new TextView(this)); 

       out.get(i).setLayoutParams(lpar); 
       out.get(i).setId(i+1); 
       Log.v("my","hey : "+out.get(i-1).getId()); 

       lparams.addRule(RelativeLayout.BELOW,out.get(i-1).getId()); 
       llay.setLayoutParams(lparams); 

       out.get(i).setText("Title "+i+"\n\n\n\n\n\n"); 

       llay.addView(out.get(i)); 

      } 

       Log.v("my","rasasched"); 

Bằng cách thực hiện các chương trình tôi nhận được lỗi nàyNhận ClassCastException khi cố gắng chèn RelativeLayout dyanmically?

04-06 20:30:49.372: E/AndroidRuntime(1093): FATAL EXCEPTION: main 
04-06 20:30:49.372: E/AndroidRuntime(1093): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.widget.ScrollView.onMeasure(ScrollView.java:301) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.View.measure(View.java:8171) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.View.measure(View.java:8171) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.widget.LinearLayout.measureVertical(LinearLayout.java:526) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.View.measure(View.java:8171) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.View.measure(View.java:8171) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.ViewRoot.performTraversals(ViewRoot.java:801) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.os.Handler.dispatchMessage(Handler.java:99) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.os.Looper.loop(Looper.java:123) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at java.lang.reflect.Method.invoke(Method.java:521) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at dalvik.system.NativeStart.main(Native Method) 

Đây là tập tin XML im sử dụng ..

<RelativeLayout 
android:id="@+id/displayPoll" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/back_blue_grad" 
android:padding="0dp" > 


    <TextView 
    android:id="@+id/user_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:text="Priyank Bharad" 
    android:textColor="#fff" 
    android:textSize="28dp" 
    android:textStyle="bold" /> 
    <ImageView 
    android:id="@+id/p_image" 
    android:layout_width="35dp" 
    android:layout_height="35dp" 
    android:layout_marginRight="10dp" 
    android:src="@drawable/final_fb" 
    android:layout_toLeftOf="@id/user_name"/> 
</RelativeLayout> 

</ScrollView> 
+0

Bản in báo cáo cuối cùng trong LogCat..đó là Log.v ("my", "rasasched"); và sau đó ngoại lệ xảy ra. –

+0

Bạn có thể bao gồm toàn bộ stacktrace không? Nó sẽ nói dòng nào là ném ngoại lệ – slayton

+0

bất cứ ai có thể giúp http://stackoverflow.com/questions/30951608/java-lang-classcastexception-android-view-viewgrouplayoutparams-cannot-be-cast – Aditya

Trả lời

64

Sai lầm ở đây là sự lựa chọn của lớp con của LayoutParams.

Các phiên bản đúng của LayoutParams để nhanh chóng phụ thuộc vào mẹ của xem bạn đang tạo, không phải là loại quan điểm riêng của mình.

Hãy nhìn vào bãi logcat:

04-06 20:30:49.372: E/AndroidRuntime(1093): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams 
04-06 20:30:49.372: E/AndroidRuntime(1093):  at android.widget.ScrollView.onMeasure(ScrollView.java:301) 

Android đang cố gắng định kiểu trường hợp của RelativeLayout.LayoutParams đến, những gì tôi tin rằng cần phải ScrollView.LayoutParams, vì RelativeLayout của bạn là bên trong một ScrollView.

Khắc phục phải thay đổi loại thông số bố cục mà bạn đang sử dụng trên RelativeLayout thành ScrollView.LayoutParams.

+0

Chỉ cần tò mò .. là có bất kỳ tài liệu nào nói rằng liên quan đến việc chọn lớp con layoutParams không? –

+1

@ adrian_88: Có, điều này được giải thích trong [tài liệu] (http://developer.android.com/guide/topics/ui/declaring-layout.html#layout-params): "Mỗi phần tử con phải xác định LayoutParams phù hợp với cha mẹ của nó, mặc dù nó cũng có thể định nghĩa các LayoutParams khác nhau cho các con riêng của nó. " – wsanville

+0

Cảm ơn, nó đã giúp –

Các vấn đề liên quan