2016-12-01 9 views
0

私はアンドロイドの新機能です。私は、アイテムにrecyclerviewを使ったナビゲーションドロワーを持っています。ビューページに3つのフラグメントを表す3つのタブがあります。私の問題は、リサイクラの表示アイテムをクリックしてフラグメントを開くことができないことです。もう一つの問題は、私がFragmentTransactionを試みたが、フラグメントIDを取得する方法を知らないことです。私がそれについているのを助けてください。私にチュートリアルのリンクを教えてください。recyclerviewの項目をクリックしたときにビューページのフラグメントを開く方法

public void onBindViewHolder(MyViewHandler holder, int position) { 

    final Information current = data.get(position); 
    holder.title.setText(current.title); 
    holder.icon.setImageResource(current.iconId); 
    holder.title.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      fragmentJump(current); 
     } 
    }); 

} 
private void fragmentJump(Information mItemSelected) { 
    mFragment = new FragmentIncome(); 
    mBundle = new Bundle(); 
    mBundle.putParcelable("item_selected_key", mItemSelected);// here my Information class is not parcelable how to solve it? 
    mFragment.setArguments(mBundle); 
    switchContent(R.id.frag1, mFragment);/// Here how to get the fragment id in R.id.frag1 of viewpager 
} 
public void switchContent(int id, Fragment fragment) { 
    if (mContext == null) 
     return; 
    if (mContext instanceof MainActivity) { 
     MainActivity mainActivity = (MainActivity) mContext; 
     Fragment frag = fragment; 
     mainActivity.switchContent(id, frag); 
    } 

} 

を、私はこの方法で作成したMainActivityに:

public void switchContent(int id, Fragment fragment) { 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
    ft.replace(id, fragment, fragment.toString()); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

を私が続いている。ここ

は私のコードは...私は試してみました私のrecyclerviewアダプタで

ですこのリンクhow to open a different fragment on recyclerview OnClick

+0

フラグメントを開こうとしましたが投稿してください。 – Nisarg

答えて

0

これは、interface callbacを使用して行うことができますrecyclerviewアイテムがクリックされたとき、kは:あなたはこれを行うことができます

:このインタフェースを実装tablayoutsあり

class NavdrawerRecyclerAdapter extends RecyclerView.Adapter<> { 

private OnFragmentInteractionListener mListener; 

public NavdrawerRecyclerAdapter(OnFragmentInteractionListener listener){ 
mListner = listner; 
} 

//call and pass position inside onClick 
public void onRecyclerItemClicked(int pos){ 
mListener.openFragment(pos); 
} 


public interface OnFragmentInteractionListener{ 
public void openFragment(int pos); 
}} 

今すぐあなたのmainactivityが。

public class MainActivity extends AppCompatActivity implements NavdrawerRecyclerAdapter.OnFragmentInteractionListener{ 

NavdrawerRecyclerAdapter adapter = new NavdrawerRecyclerAdapter(this); 

@override 
openFragment(int position){ 
TabLayout.Tab tab = tabLayout.getTabAt(position); 
tab.select(); 
} 
} 

これが動作するかどうか試してみてください。

+0

動作しません。アプリで何も変更はありません。クリックが機能していない – Fatema

+0

onClickが動作していません。recyclerviewのonClick – pawar

+0

は、onRecyclerItemClickedです。 – Fatema

関連する問題