I already managed to implement a ViewPager inside a fragment, filled with listviews on each tab. If you click on an item from one of the listviews, a new fragment should fill the whole screen to show some details of the selected item. The problem is, that the new fragment isn't showing anything. It's just empty and so frustrating!
VerlaufFragment.java, holding the viewPager
public class VerlaufFragment extends Fragment {
public static ViewPager mViewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.viewpager_main, container, false);
// Locate the ViewPager in viewpager_main.xml
mViewPager = (ViewPager) view.findViewById(R.id.viewPager);
// Set the ViewPagerAdapter into ViewPager
mViewPager.setAdapter(new ViewPagerAdapter(getChildFragmentManager()));
mViewPager.setCurrentItem(3);
return view;
}
public class ViewPagerAdapter extends FragmentPagerAdapter {
// Declare the number of ViewPager pages
final int PAGE_COUNT = 7;
private String titles[] = new String[] { "Tab1", "Tab2" , "Tab3" , "Tab4" , "Tab5" , "Tab6" , "Tab7" };
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
// Open FragmentTab1
case 0:
UebungenMainFragment fragmenttab1 = new UebungenMainFragment();
return fragmenttab1;
// Open FragmentTab2
case 1:
UebungenMainFragment fragmenttab2 = new UebungenMainFragment();
return fragmenttab2;
//Open FragmentTab3
default:
UebungenMainFragment fragmenttab3 = new UebungenMainFragment();
return fragmenttab3;
}
}
public CharSequence getPageTitle(int position) {
return titles[position];
}
@Override
public int getCount() {
return PAGE_COUNT;
}
}
@Override
public void onDetach() {
super.onDetach();
}
}
UebungenMainFragment.java with all the Listviews
public class UebungenMainFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
String[] values = new String[] { "Item", "Item", "Item",
"Item", "Item", "Item", "Item", "Item",
"Item", "Item", "Item", "Item", "Item", "Item"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, values);
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(((ViewGroup) getView().getParent()).getId(), new UebungDetailedFragment());
transaction.addToBackStack(null);
transaction.commit();
}
}
and finally the UebungDetailedFragment.java with details of the item
public class UebungDetailedFragment extends Fragment{
TextView tvItemName;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_main, container,
false);
tvItemName = (TextView) view.findViewById(R.id.frag1_text);
tvItemName.setText("HELLO WORLD");
return view;
}
}
xml Files:
fragment_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/frag1_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
If I click on one of the items, the tabs are still visible, the listview is gone, but my "HELLO WORLD" doesn't appear. Also if I stay in this "empty" view and swipe horizontaly, I can still swipe between the listviews, what I also don't want. Any idea to make it works?