从RecyclerViewAdapter打开片段

时间:2017-07-26 17:56:52

标签: android android-fragments android-recyclerview

当用户点击recyclerview项目时,我需要打开一个新片段。

我正在使用以下代码:

@Override
public boolean onMenuItemClick(MenuItem menuItem) {
    switch (menuItem.getItemId()) {
        case R.id.action_favourite:




            mPref = context.getSharedPreferences(PREF_NAME, MODE_PRIVATE);


            SharedPreferences.Editor editor = mPref.edit();
            Log.d("HOLA PERFIL", "HE PULSADO EL PRODUCTO: " + tiendas.get(pos).getId_producto());


            editor.putInt("ID_PRODUCTO", tiendas.get(pos).getId_producto());
            editor.putString("NOMBRE_PRODUCTO", tiendas.get(pos).getNombre_producto());
            editor.putString("DESCRIPCION_PRODUCTO", tiendas.get(pos).getDescripcion_producto());
            editor.putString("PRESENTACION_PRODUCTO", tiendas.get(pos).getPresentacion_producto());
            editor.putString("PRECIO_PRODUCTO", tiendas.get(pos).getPrecio_producto());
            editor.putString("ESPECIFICACIONES_PRODUCTO", tiendas.get(pos).getEspecificaciones_producto());
            editor.putString("IMAGEN_PRODUCTO", tiendas.get(pos).getImagen_producto());
            editor.apply();


            DetalleTiendaFragment firstFragment = new DetalleTiendaFragment();
            ((MainActivity)context).getSupportFragmentManager().beginTransaction()
                    .add(R.id.frame, firstFragment);




            return true;

        default:
    }
    return false;
}

我在其他项目中使用相同的操作,它工作正常,但在这里它不会打开片段,并且不会抛出任何警告或错误:

DetalleTiendaFragment firstFragment = new DetalleTiendaFragment();
                    ((MainActivity)context).getSupportFragmentManager().beginTransaction()
                            .add(R.id.frame, firstFragment);

1 个答案:

答案 0 :(得分:1)

更改此代码

DetalleTiendaFragment firstFragment = new DetalleTiendaFragment();
            ((MainActivity)context).getSupportFragmentManager().beginTransaction()
                    .add(R.id.frame, firstFragment);

到此代码

DetalleTiendaFragment firstFragment = new DetalleTiendaFragment();   
FragmentTransaction transaction = ((MainActivity)context).getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame, firstFragment);
transaction.addToBackStack("firstFragment");
transaction.commit();