Ich habe eine ViewPager
, der ich Fragmente hinzufügen möchte. Der ViewPager wird auf dem Bildschirm korrekt angezeigt, enthält jedoch leider keinen Inhalt.Fragment in ViewPager nicht sichtbar
Ich habe den Vorschlag in einigen posts gesehen
getChildFragmentManager()
getSupportFragmentManager()
mit
zu ersetzen, aber ich brauche dieActionBar
. Leider ist die
ChildFragmentmanager
nicht in der
AppCompatActivity
verfügbar.
Während des Debuggens habe ich festgestellt, dass die Methode des Fragments onCreateView()
aufgerufen wird und es ein Layout zurückgibt.
Frage: Wie kann ich die Fragments
sichtbar machen? Und war der Hauptunterschied von meinem Code zu diesem sample?
Aktivität:
public class ViewPagerActivity extends AppCompatActivity {
private ViewPager mViewPager;
private List<Location> locationList = new ArrayList<>();
private locationsBaseHandler db;
private CustomPagerAdapter mAdapter;
private Location mLocation;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpager);
locationList.add(someData);
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mAdapter = new CustomPagerAdapter(this, getSupportFragmentManager(), locationList);
mViewPager.setAdapter(mAdapter);
}
}
Pager-Adapter:
public class CustomPagerAdapter extends FragmentPagerAdapter {
private Context mContext;
private List<Location> locationList = new ArrayList<>();
public CustomPagerAdapter(Context mContext, FragmentManager fm, List<Location> locationList) {
super(fm);
this.locationList.addAll(locationList);
this.mContext = mContext;
}
@Override
public Fragment getItem(int position) {
return LocationFragment.newInstance(position);
}
@Override
public int getCount() {
return 5;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return false;
}
}
Fragment:
public class LocationFragment extends Fragment {
private static final String ARG_LAYOUT_ID = "page_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View layout = inflater.inflate(R.layout.fragment_location, container, false);
return layout;
}
public static LocationFragment newInstance(int selectedIdForIndex) {
LocationFragment fragment = new LocationFragment();
Bundle args = new Bundle();
args.putInt(ARG_LAYOUT_ID, selectedIdForIndex);
fragment.setArguments(args);
return fragment;
}
public int getPageNumber() {
return getArguments().getInt(ARG_LAYOUT_ID);
}
}