Как открыть новый фрагмент из другого фрагмента
Я попытался сделать переходы между фрагментами. У меня есть NewFragment.java с новым фрагментом работает. Моя проблема:
Как сделать этот onClickListener запустить NewFragment.Ява правильно?
button.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
Intent i = new Intent(getActivity(), NewFragment.class);
startActivity(i);
}});
FYI: это изнутри фрагмента (я не знаю, имеет ли это значение).
6 ответов
добавить следующий код в функцию прослушивателя,
NextFragment nextFrag= new NextFragment();
getActivity().getSupportFragmentManager().beginTransaction()
.replace(R.id.Layout_container, nextFrag,"findThisFragment")
.addToBackStack(null)
.commit();
Это более описанный код кода @Narendra,
сначала вам нужен экземпляр 2-го фрагмента. Тогда у вас должны быть объекты FragmentManager и FragmentTransaction. Полный код, как показано ниже,
Fragment2 fragment2=new Fragment2();
FragmentManager fragmentManager=getActivity().getFragmentManager();
FragmentTransaction fragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.content_main,fragment2,"tag");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
надеюсь, это сработает. Иногда вы можете получить getSupportFragmentManager () вместо getFragmentManager ().
вы должны создать функцию внутри действия, чтобы открыть новый фрагмент и передать ссылку на действие фрагменту и на какое-то событие внутри фрагмента вызвать эту функцию.
@Override
public void onListItemClick(ListView l, View v, int pos, long id) {
super.onListItemClick(l, v, pos, id);
UserResult nextFrag= new UserResult();
this.getFragmentManager().beginTransaction()
.replace(R.id.content_frame, nextFrag, null)
.addToBackStack(null)
.commit();
}
использовать это,
AppCompatActivity activity = (AppCompatActivity) view.getContext();
Fragment myFragment = new MyFragment();
activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment).addToBackStack(null).commit();
Fragment fr = new Fragment_class();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.add(R.id.viewpagerId, fr);
fragmentTransaction.commit();
просто, чтобы быть точным, R.id.viewpagerId
cretaed в текущем макете класса, при вызове, новый фрагмент автоматически проникает.