0

私のカスタムページャアダプタでフラグメントを開始したいと思います。しかし、私はトランザクションを開始するにはgetSupportFragmentManager()を取得する方法がわかりません。PagerAdapterからフラグメントを開始する方法

このたびはお時間を頂き、誠にありがとうございます。

これは私のコード、ポケットベルのカスタムアダプタです:

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; 
    } 

答えて

2

使用したい場合はSlideShowAdapterFragmentManager

  • 一つのアプローチはSlideShowAdapterコンストラクタ
  • 別にそのインスタンスを渡すことですあなたのActivityFragmentActivityまたはAppCompatActivityActivityクラスはgetSupportFragmentManager()メソッドを持たない)として渡すことです。 oコンストラクタを呼び出し、myActivity.getSupportFragmentManager()を実行します。
+0

私は第2のアプローチを試しましたが、それは正しいです。しかし、アイテムをクリックしたときに断片化することはありませんでした – DonDave

0

@Amin Mousaviの提案に基づいて解決策を得ました。

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; 
    } 
関連する問題