0

i need to start a fragment from another fragment.

i have my MainActivity

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

             mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
             mNavigationView = (NavigationView) findViewById(R.id.shitstuff) ;

             mFragmentManager = getSupportFragmentManager();
             mFragmentTransaction = mFragmentManager.beginTransaction();
             mFragmentTransaction.replace(R.id.containerView,new TabFragment()).commit();

             mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
                 @Override
                 public boolean onNavigationItemSelected(MenuItem menuItem) {
                     mDrawerLayout.closeDrawers();

                     //Selecao dos menus

                     if (menuItem.getItemId() == R.id.nav_reservas) {
                         FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
                         fragmentTransaction.replace(R.id.containerView, new Reservas()).commit();
                     } else if (menuItem.getItemId() == R.id.nav_hotel) {
                         FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
                         xfragmentTransaction.replace(R.id.containerView, new TabFragment()).commit();
                     } else if (menuItem.getItemId() == R.id.nav_check) {
                         FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
                         xfragmentTransaction.replace(R.id.containerView, new CheckIn()).commit();
                     } else if (menuItem.getItemId() == R.id.nav_loc) {
                         FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
                         xfragmentTransaction.replace(R.id.containerView, new Endereco()).commit();
                     } else if (menuItem.getItemId() == R.id.nav_avalie) {
                         FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
                         xfragmentTransaction.replace(R.id.containerView, new Avalie()).commit();
                     } else if (menuItem.getItemId() == R.id.nav_info) {
                         FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
                         xfragmentTransaction.replace(R.id.containerView, new Informacoes()).commit();
                     } else if (menuItem.getItemId() == R.id.nav_guia) {
                         FragmentTransaction xfragmentTransaction = mFragmentManager.beginTransaction();
                         xfragmentTransaction.replace(R.id.containerView, new GuiaDaCidade()).commit();
                     }

                     return false;
                     }

                 }

                 );

and i start the GuiaDaCidade extends fragment.

public class GuiaDaCidade extends Fragment {

    View rootView;

    @Nullable
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.guia_da_cidade, null);

        View botaoPasseios = (View) rootView.findViewById(R.id.btpasseios);
        View botaoAgenda = (View) rootView.findViewById(R.id.btagenda);

        botaoPasseios.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

            }
        });

I need that when the button is clicked start the Passeios extends Fragment

  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            rootView = inflater.inflate(R.layout.guia_passeios, null);

            expListView = (ExpandableListView) rootView.findViewById(R.id.listaexp);

            prepareListData();

            listAdapter = new ExpandableListAdapter(getActivity(), listDataHeader, listDataChild);

            expListView.setAdapter(listAdapter);
            expandeAll();
            expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {

                @Override
                public boolean onChildClick(ExpandableListView parent, View v,
                                            int groupPosition, int childPosition, long id) {

                    mudaTela(groupPosition, childPosition);

                    return false;
                }
            });

            return rootView;
        }

I already tried everything possible but no way is working.

John Joe
  • 12,412
  • 16
  • 70
  • 135
Maroni
  • 9
  • 2

2 Answers2

0

before you start another fragment, if you want to keep your current fragment into backstack so that it is available when user presses back button, add it to back stack using fragment manager. Then just use the same line: fragmentTransaction.replace(containerView,new Fragment(), TAG).commit();

Rusheel Jain
  • 843
  • 6
  • 20
0

GuiaDaCidade

botaoPasseios.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Passeios fragment = new Passeios();
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            transaction.replace(R.id.your_guiadacidade_layoutID, fragment);
            transaction.addToBackStack(null);
            transaction.commit();
        }
    });
John Joe
  • 12,412
  • 16
  • 70
  • 135