0

Привет У меня есть RecycleViewAdapter и кнопка. Я хочу, чтобы эта кнопка начала фрагмент. Я могу начать работу, но не фрагмент. Я попробовал этот метод Onclick для моего Buttonначало Фрагмент из адаптера RecycleView Onclick

@Override 
     public void onClick(View v) { 
      Bundle bundle = new Bundle(); 
      bundle.putParcelable("event", events.get(getLayoutPosition())); 
      Fragment fragment = new EditEventDetailFragment(); 
      fragment.setArguments(bundle); 
      fragment.getFragmentManager().beginTransaction().replace(R.id.contentMainDrawer,fragment).commit(); 
     } 

Но есть ошибка вызова нулевой объект (contentMainDrawer) мой Основная деятельность content_layout.

Любая помощь очень ценится. Вид фрагмента хоста рециркуляцией вызов из Mainactivity

+0

Ум, вы не должны использовать FragmentManager из фрагмента, который вы только что создали. Замените эту строку frag.getFragmentManager() только с помощью getFragmentManager() (или getSupportFragmentManager() в зависимости от того, какой фрагмент вы используете) – scana

+0

спасибо за помощь yrs, но код находится внутри адаптера RecycleView (а не другой активности или фрагмента) –

+0

Well , если вам действительно нужно это сделать, тогда вы можете это сделать: ((Activity) v.getContext) .getFragmentManager(). Но это не очень хороший подход. Вы могли бы переместить обработку onClick в родительский класс. Взгляните на это сообщение: http://stackoverflow.com/a/24933117/1139527 – scana

ответ

0

Используйте ниже код для замены фрагмента

Fragment fragment = new EditEventDetailFragment(); 
FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
fragmentTransaction.replace(R.id.contentMainDrawer, fragment, "tag").commit(); 

, если вы используете этот код внутри адаптера, чем заменить getActivity() на ((Activity) context).

+0

спасибо за ваш ответ, но код внутри recycleView адаптер не может вызвать getActivity() или я не знаю, как вызвать getActivity() –

+0

Я пробовал немного времени, но эта строка не работает FragmentManager fragmentManager = ((Activity)) .getSupportFragmentManager(); не может вызвать getSupportFragmentManager –

+0

заменить getSupportFragmentManager на getChildFragmentManager() –

0

Привет Я нашел 2 ответ, помогите тем, кто в ней нуждается. Ответ заключается в том, чтобы использовать Activity, на котором размещается вызывающий фрагмент. Большое спасибо @Mohit Suthar

Bundle bundle = new Bundle(); 
      bundle.putParcelable("event", events.get(getLayoutPosition())); 
      Fragment fragment = new EditEventDetailFragment(); 
      fragment.setArguments(bundle); 

      FragmentManager fragmentManager = ((MainActivity) context).getSupportFragmentManager(); 
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
      fragmentTransaction.replace(R.id.contentMainDrawer, fragment, "tag").commit(); 
Смежные вопросы