2017-08-19 8 views
0

私のrecyclerviewアダプタでフラグメントフォームonClickを開き、データを渡したいと思います。私はどのようにアクティビティを開いているかを知っています(下のコードをチェックしてください)、どうすれば同じ方法でフラグメントを開くことができますか?より良い理解のために、以下のコードをチェックしてください。私はアンドロイドには新しく、無料のリソースから学びたいと思っています。何かが間違っている場合は申し訳ありません。onClickからフラグメントを開くには

CODE

@Override 
     public void onClick(View v) { 
      int position = getAdapterPosition(); 
      PlaylistDetailsItem playlistDetailsItems = this.playlistDetailsItems.get(position); 
      Intent intent = new Intent(this.context, VideoActivity.class); 

      intent.putExtra("videoHeading", playlistDetailsItems.getPlaylistDetailsSnippet() 
        .getPlaylistDetailsTitle()); 

      intent.putExtra("videoDesc", playlistDetailsItems.getPlaylistDetailsSnippet() 
        .getPlaylistDetailsDescription()); 

      intent.putExtra("videoID", playlistDetailsItems.getPlaylistDetailsSnippet() 
        .getPlaylistDetailsResourceId().getVideoId()); 

      this.context.startActivity(intent); 

     } 
    } 
+0

https://stackoverflow.com/q/42055690/2979171本格的に見えます。これをチェックし、データを送るためにコンストラクタ – lvl4fi4

+0

を使用することができます。私はrecyclerviewアダプタでこれを使用しています。getFragmentManager()は解決方法を 'getFragmentManager' – P595

答えて

0

バンドルにデータを入れて、この方法でそれを渡し、あなたのonClick

FirstFragment firstFrag = new FirstFragment(); 
this.getFragmentManager().beginTransaction() 
     .replace(R.id.layout_container, firstFrag, TAG_FRAGMENT) 
     .addToBackStack(null) 
     .commit(); 
0
Bundle b = new Bundle(); 
    replaceFragmentInternal(new fragment,b,true,false); 

//に次のコードを追加します。トップレベルアクティビティでこのメソッドを使用すると、同じコードを繰り返し書き込む必要はありません。

replaceFragmentInternal(Fragment fragment, Bundle bundle, boolean addToBackStack, boolean anim) { 
     if (bundle != null) 
      fragment.setArguments(bundle); 

     tag = fragment.getClass().getSimpleName(); 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     //ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     //ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left, R.anim.slide_in_right, R.anim.slide_out_right); 
     ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left, R.anim.slide_in_left, R.anim.slide_out_right); 
     ft.replace(R.id.container_internal, fragment, tag); 
     fragment.setRetainInstance(true); 

     if (addToBackStack) 
      ft.addToBackStack(tag); 

     try { 
      ft.commit(); 

     } catch (Exception ex) { 
      ex.printStackTrace(); 
      ft.commitAllowingStateLoss(); 
     } 
    } 
0

あなたがこのようにフラグメントクラスを作成し、android.support.v4.app.Fragmentをインポートするために覚えておく必要がまず第一。 (サポートv4のフラグメント)

public class MyFragment extends Fragment { 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.your_xml_file, container, false); 
    return view; 
} 

}

そして、いや、それから終了する前に最後にリサイクルビューのアダプタ内のペーストの場合は、Viewholderを作成しました

MyFragment myfragment = new Fragment(); 

//pass data 
     Bundle bundle = new Bundle(); 
     bundle.putString("KEY","DATA"); 
     myfragment.setArguments(bundle); 

    FragmentTransaction fragmentManager = activity.getSupportFragmentManager().beginTransaction(); 
      fragmentManager.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 

       fragmentManager.addToBackStack(null); 

      fragmentManager.replace(R.id.content, mFragment, TAG).commit(); 
0

のようなフラグメントを呼び出しますアダプタ(下部 "}"の前)

public ViewHolder(View itemView) { 
     super(itemView); 
     mView = itemView; 
     mIdView = (TextView) itemView.findViewById(R.id.id); 
     mContentView = (TextView) itemView.findViewById(R.id.content); 

     mView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       final int position = getAdapterPosition(); 
       if (null != listener) {  
        listener.onListFragmentInteraction(mValues.get(position)); 
       } 
      } 
    }); 
} 

また、このチュートリアルを送信用にお読みくださいデータ: https://developer.android.com/training/basics/fragments/communicating.html

このすべては、ハードpreattyに見えますが、それは、この学習のためであり、また

関連する問題