6

Mam widoku niestandardowego (który rozciąga viewgroup) i określono pewne atrybuty niestandardowe zdefiniowane w attrs.xml ....Format niestandardowego atrybutu "atrybut odwołania" w systemie Android?

<declare-styleable name="datascope"> 
    <attr name="colcount" format="integer" /> 
    <attr name="titleheaderrows" format="integer" /> 
    <attr name="colheaderrows" format="integer" /> 
    <attr name="rowlayout" format="reference" /> 
</declare-styleable> 

liczb całkowitych I może pickup grzywny, ale ostatni - rowlayout - Chcę użyć, aby odnieść się do kolejnego pliku układu, który zwiększę na żądanie. Ale nie mogę znaleźć właściwego sposobu na wyrażenie atrybutu rowlayout w głównym pliku układu. Próbowałem:

lui:rowlayout="@layout/sensorvaluesdata"> 

ale to się nie powiedzie w czasie wykonywania:

E/Android Runtime (22092): Spowodowany przez: java.lang.NumberFormatException: nie można przeanalizować „RES/Układ/sensorvaluesdata. XML”całkowita

i

lui:rowlayout="?layout/sensorvaluesdata" 

wHI ch nie

E/Android Runtime (22341): Spowodowany przez: java.lang.NumberFormatException: nie można analizować jako liczba całkowita

co ciekawe Bo wydaje się, że zatrzymany "2130903043? Identyfikator zasobu tam, ale zablokowany ? z przodu, jak również.

Moje pliki R.java ma rozsądnie wyglądającą linię dla sensorvaluesdata.

public static final class layout { 

    public static final int sensorvaluesdata=0x7f030003; 

} 

jaki jest właściwy sposób na zrobienie tego?

(mogę ciężko zakodowania informacji dotyczących źródła Java i działa dobrze ....

View vx = li.inflate(R.layout.sensorvaluesdata, this, false); 
+3

dobrze jest to dziwne, próbowałem ponownie dopiero teraz i to wszystko działa OK. Sprawdziłem i wszystko wygląda identycznie, a kilka razy oczyściłem projekt podczas pracy nad tym przed oryginalnym wpisem. Mogę tylko założyć, że Eclipse miał chwiejny moment - dzięki eclipse /) – pootle

Odpowiedz

5

Wystarczy dodać trochę więcej tła dla kogoś innego. W użyciu kodu coś takiego

LinearLayout ViewContainer=(LinearLayout) (LayoutInflater.from(context)).inflate(
    attributes.getResourceId(
     R.styleable.[styleableName]_[attributeName], 
     R.layout.[defaultValue]), 
    null); 

w XML atrybuty pod tobą styleable nazwy ...

<attr name="layout" format="reference"/>