Reputation: 63
I want to start Fragment in my custom pager adapter. However, I do not know how to get the getSupportFragmentManager()
to begin the transaction.
Thank you very much for your time and assistance in this matter.
This is my code, custom adapter for Pager:
public static class SlideShowAdapter extends PagerAdapter {
private ArrayList<Movie> popularMovieList;
private LayoutInflater inflater;
private Context context;
public SlideShowAdapter(Context context, ArrayList<Movie> popularMovieList) {
this.context = context;
this.popularMovieList =popularMovieList;
inflater = LayoutInflater.from(context);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount()
{
return popularMovieList.size();
}
@Override
public Object instantiateItem(ViewGroup view, final int position) {
View myImageLayout = inflater.inflate(R.layout.slide, view, false);
ImageView myImage = (ImageView) myImageLayout
.findViewById(R.id.slideShowImg);
Picasso.with(context).load(popularMovieList.get(position).getImage()).into(myImage);
view.addView(myImageLayout, 0);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MovieFragment movieFragment = MovieFragment
.newInstance(popularMovieList.get(position),popularMovieList.get(position).getGenre());
/***These code below does not work*/
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.fragArea,movieFragment)
.addToBackStack(null)
.commit();
}
});
return myImageLayout;
}
Upvotes: 0
Views: 390
Reputation: 63
I got the solution based on @Amin Mousavi suggestion.
public static class SlideShowAdapter extends PagerAdapter {
private ArrayList<Movie> popularMovieList;
private LayoutInflater inflater;
private FragmentActivity context;
public SlideShowAdapter(FragmentActivity context, ArrayList<Movie> popularMovieList) {
this.context = context;
this.popularMovieList =popularMovieList;
inflater = LayoutInflater.from(context);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount()
{
return popularMovieList.size();
}
@Override
public Object instantiateItem(ViewGroup view, final int position) {
View myImageLayout = inflater.inflate(R.layout.slide, view, false);
ImageView myImage = (ImageView) myImageLayout
.findViewById(R.id.slideShowImg);
Picasso.with(context).load(popularMovieList.get(position).getImage()).into(myImage);
view.addView(myImageLayout, 0);
myImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MovieFragment movieFragment = MovieFragment
.newInstance(popularMovieList.get(position),popularMovieList.get(position).getGenre());
/***These code below does not work*/
context.getSupportFragmentManager().beginTransaction()
.replace(R.id.fragArea,movieFragment)
.addToBackStack(null)
.commit();
}
});
return myImageLayout;
}
Upvotes: 0
Reputation: 1290
If you want to use FragmentManager
in SlideShowAdapter
:
SlideShowAdapter
constructorActivity
as FragmentActivity
or AppCompatActivity
(Activity
class does not have getSupportFragmentManager()
method) to its constructor and then do myActivity.getSupportFragmentManager()
.Upvotes: 2