2012-04-06 16 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"); 

Podczas wykonywania programu otrzymuję ten błądUzyskiwanie wyjątku ClassCastException podczas próby wstawiania RelativeLayout w sposób dyanmowy?

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) 

Jest to plik XML im przy ..

<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

Drukuje ostatnią instrukcję w LogCat..to jest Log.v ("mój", "rasasched"); a następnie pojawia się wyjątek. –

+0

Czy możesz uwzględnić cały ślad stosu? Należy powiedzieć, która linia rzuca wyjątek – slayton

+0

może ktoś pomóc http://stackoverflow.com/questions/30951608/java-lang-classcastexception-android-view-viewgrouplayoutparams-cannot-be-cast – Aditya

Odpowiedz

64

Pomyłka Oto w wyborze podklasy LayoutParams.

Poprawna wersja LayoutParams instancji zależy od rodzica widoku jesteś tworzenie, nie typ samego widzenia.

Spójrz na wysypisku 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 próbuje typecast instancji RelativeLayout.LayoutParams To, co uważam, że powinniśmy być ScrollView.LayoutParams, ponieważ RelativeLayout jest wewnątrz ScrollView.

Ta poprawka powinna zmienić typ parametrów układu, którego używasz na RelativeLayout do ScrollView.LayoutParams.

+0

Po prostu z ciekawości .. jest istnieje jakaś dokumentacja, która mówi o wyborze podklasy layoutParams? –

+1

@ adrian_88: Tak, wyjaśniono to w [dokumentacja] (http://developer.android.com/guide/topics/ui/declaring-layout.html#layout-params): "Każdy element podrzędny musi definiować LayoutParams, które są odpowiednie dla rodzica, ale może również definiować różne LayoutParams dla swoich własnych dzieci. " – wsanville

+0

Dzięki, pomogło –

Powiązane problemy