2013-06-18 15 views
8

Próbuję zawierać następujący układ dwukrotnie:android - xml - zawierają ten sam układ wielokrotnie nie działa

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical" > 

<com.viewpagerindicator.TabPageIndicator 
    android:id="@+id/indicator" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

jak na poniższym

<include 
    android:id="@+id/include1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    layout="@layout/view_pager" /> 

<include 
    android:id="@+id/include2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    layout="@layout/view_pager" /> 

Faktycznie, pager drugiego widoku nie działa, gdy robię to w ten sposób ... Pager z drugiego widoku zawsze pozostaje pusty ... Jeśli skopiuję układ view_pager i zmieniam identyfikatory w tym układzie (pager na pager2 i wskaźnik na wskaźnik2) e wszystko działa dobrze. Czy istnieje lepszy sposób na zrobienie tego? Kopiowanie układów w celu osiągnięcia tego wydaje się sprawić, że zawartość będzie bezużyteczna dla wielu elementów tego samego układu ...

Dostaję poprawnie referencje, ale mimo to po prostu nie działa, jeśli uwzględnię ten sam układ. ..

pager1= (ViewPager)(findViewById(R.id.include1).findViewById(R.id.pager)); 
pager2= (ViewPager)(findViewById(R.id.include2).findViewById(R.id.pager)); 

Wszystko działa doskonale gdybym skopiować układ ...

Edit:

myślę, że ma do czynienia z FragmentManager, ponieważ widok mieć pagery ten sam identyfikator ... Ale nie wiem, jak rozwiązać to poprawnie ...

Odpowiedz

2

Tak, można to zrobić. Możesz nadmuchać układ wiele razy, ale musisz programowo włączyć program. Zobacz answer na tego samego rodzaju pytanie.