Autore Topic: java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams  (Letto 895 volte)

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Ho un'activity con un RelativeLayout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
   android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
   android:background="@drawable/template" android:id="@+id/punteggio_attuale_view_id">

   ......ecc...........

</RelativeLayout>


Lato java posizionavo un elemento all'interno di questo layout e tutto funzionava con questo codice

TextView vintiTextView = (TextView) findViewById(R.id.punteggio_attuale_vinti);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_TOP, premioRaggiuntoId);
params.addRule(RelativeLayout.RIGHT_OF, premioRaggiuntoId);
vintiTextView.setPadding(0, 0, 0, 2);
vintiTextView.setVisibility(View.VISIBLE);
vintiTextView.setLayoutParams(params);

Poi ho dovuto modificare il layout originale inserendo uno scroll in questo modo:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:layout_width="fill_parent"
   android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
   android:background="@drawable/template" android:id="@+id/punteggio_attuale_view_id">

    <ScrollView
        android:layout_below="@+id/punteggio_attuale_view_id"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

   ......ecc...........
   
        </LinearLayout>
    </ScrollView>

</RelativeLayout>


Quando vado ad eseguire il mio codice ho questa eccezione:

03-01 15:01:36.404: ERROR/AndroidRuntime(1825): Uncaught handler: thread main exiting due to uncaught exception
03-01 15:01:36.416: ERROR/AndroidRuntime(1825): java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.LinearLayout.measureVertical(LinearLayout.java:326)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.LinearLayout.onMeasure(LinearLayout.java:278)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.View.measure(View.java:7703)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:892)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.ScrollView.onMeasure(ScrollView.java:276)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.View.measure(View.java:7703)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:569)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:361)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.View.measure(View.java:7703)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.View.measure(View.java:7703)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:2989)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.View.measure(View.java:7703)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.ViewRoot.performTraversals(ViewRoot.java:747)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1613)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.os.Looper.loop(Looper.java:123)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at android.app.ActivityThread.main(ActivityThread.java:4203)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at java.lang.reflect.Method.invokeNative(Native Method)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at java.lang.reflect.Method.invoke(Method.java:521)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
03-01 15:01:36.416: ERROR/AndroidRuntime(1825):     at dalvik.system.NativeStart.main(Native Method)
03-01 15:01:36.426: INFO/Process(52): Sending signal. PID: 1825 SIG: 3

Causata proprio dal codice con cui vado a posizionare l'elemento vintiTextView

Come faccio a posizionare vintiTextView? ho provato anche ad invertire l'ordine tra ScrollView e RelativeLayout ma l'errore rimane

Offline andream1977

  • Utente normale
  • ***
  • Post: 260
  • Respect: +7
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
  • Sistema operativo:
    windows xp
Re:java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams
« Risposta #1 il: 01 Marzo 2011, 18:01:20 CET »
0
Ho trovato la soluzione
dovevo mettere il RelativeLayout come layout pù interno e non come quello più esterno, ecco il codice:

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>

    <ScrollView
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_below="@+id/punteggio_attuale_view_id"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:fillViewport="true">
        <LinearLayout
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="vertical">

<RelativeLayout android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="@drawable/template" android:id="@+id/punteggio_attuale_view_id">

   ......ecc...........
</RelativeLayout>
   
        </LinearLayout>
    </ScrollView>