Mam 3 karty w FragmentStatePagerAdapter. Mam fragment dla zakładki 1, który dynamicznie dodaje widoki do kontenera "linearlayout" wewnątrz układu względnego. Dodaję dynamicznie niektóre widoki w fragmencie 1 karty. Dodałem również pełny fragment w tym pojemniku linearLayout z innymi widokami w górę iw dół. to działa dobrze ... wszystko dobrze.W aplikacji ViewPager po przesunięciu do trzeciej karty fragment dziecka na karcie 1 znika
ale kiedy przejdę na trzecią stronę i wrócę. wszystkie widoki są tam. ale to kompletny fragment zniknął ~~ EDIT
znika ona z Wypustu1 i pojawia się pod poglądami w Karta2 gdzie dodaje inny childfragment ..
Przede wszystkim mam listFragment w Wypustu1 i Karta2. na podstawie listItem kliknij i załaduj fragment na każdej karcie, że oba fragmenty w tab1 i 2 nadymają to samo poniżej xml i dodaje dynamiczne widoki, ale w niektórych przypadkach dodaję cały fragment zamiast widoku w układzie liniowym podanym w xml. Problem Powstał, gdy muszę dodać dwa fragmenty w nowych dodanych fragmentach na zakładce 1 i tab2, po tym, jak były tylko listy i przesunięte do tab3. po powrocie. Fragment w „Wypustu1 głównego fragmentu” zniknął i pojawił się pod fragmentem „Karta2 głównego fragmentu”
to jest viewpager, w którym zmienia różne fragmenty metodą setItem (fragment, stanowisko)
public static class ScreenSlidePagerAdapter extends
FragmentStatePagerAdapter {
public static ArrayList<Fragment> tabs_fragments = new ArrayList<Fragment>(
3);
public ScreenSlidePagerAdapter(FragmentManager fm,
ArrayList<Fragment> tabs) {
super(fm);
ScreenSlidePagerAdapter.tabs_fragments = tabs;
}
@Override
public Fragment getItem(int arg0) {
return tabs_fragments.get(arg0);
}
@Override
public int getCount() {
return tabs_fragments.size();
}
@Override
public int getItemPosition(Object object) {
if (tabs_fragments.contains(object)) {
return POSITION_UNCHANGED;
}
return POSITION_NONE;
}
public static void setItem(Fragment fr, int position) {
if (position <= 2 && position >= 0) {
tabs_fragments.remove(position);
tabs_fragments.add(position, fr);
} else
Log.d("adding tab", "wrong tab position to add fragment at");
}
}
to w jaki sposób mogę dodać moje fragmentu do linearlayout gdzie „ll” jest liniowy układ wewnątrz względnego układu, który jest rzeczywisty contentView dla fragmentu na Wypustu1
ll.addView(getTitle("Set Message Receive Settings"));
// View smsRecLayout = inflater.inflate(R.layout.fr_ev_sms_receive,
// container, false);
Bundle b = new Bundle();
b.putInt("id", eventId);
b.putInt("event", eventTypeId);
Fragment fr = new FrEv_SMSReceive();
fr.setArguments(b);
getFragmentManager().beginTransaction()
.add(ll.getId(), fr, "fr_sms_receive").commit();
to układ fragmentu gdzie dodawany jest kolejny fragment w układzie liniowym "fr_e vent_container ". FragmentStatePagerAdapter
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".EventDetails" >
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center_horizontal"
android:padding="10dp"
android:textIsSelectable="false" />
<ScrollView
android:id="@+id/fr_event_container_scroll"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/sep1"
android:layout_alignParentLeft="true"
android:layout_below="@+id/title" >
<LinearLayout
android:id="@+id/fr_event_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
<View
android:id="@+id/sep1"
android:layout_width="fill_parent"
android:layout_height="2dp"
android:layout_above="@+id/addOther"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"
android:background="#000"
android:padding="10dp"
android:visibility="gone" />
<Button
android:id="@+id/next"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/addOther"
android:layout_alignBottom="@+id/addOther"
android:layout_alignParentRight="true"
android:layout_marginRight="54dp"
android:text="Next"
android:width="90dp" />
Właściwie zauważyłem, że po przejściu do tab3, ten fragment z tab1 przychodzi i jest dodawany pod widokami w tab2. gdzie używana jest ta sama kopia metody relativeLayout, jak w tab1. Czy jest coś nie tak w kopiowaniu tego samego układu dla obu kart? Nadpisuję powyższy układ dla obu kart. – ahmadalibaloch
Przepraszam, muszę przyznać, że nie przeczytałem całego twojego kodu i założyłem, że zapomniałeś o tej wspólnej pułapce. Być może możesz opublikować trochę więcej kodu, ponieważ nie widzimy twojego podglądu itp. Nie jest też w 100% jasne, co próbujesz zrobić, dodając fragmenty do swojego układu. –
dzięki swojemu rozwiązaniu również działa. ale nie mogę zrozumieć, na czym polega problem. dzięki.ale nie mogę przegłosować, że moja reputacja jest niższa niż 15: -/ – ahmadalibaloch