0

Мне нужно начать fragment от другого fragment.начать фрагмент из другого фрагмента (Android)

У меня есть мой 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; 
        } 

       } 

       ); 

и я начать GuiaDaCidade расширяет фрагмент.

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) { 

      } 
     }); 

мне нужно, что при нажатии на кнопку начать Passeios расширяет фрагмент

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; 
     } 

Я уже попробовал все возможное, но никоим образом не работает.

+0

Просто начните, как вы начинаете первый. –

ответ

0

Прежде чем вы начнете использовать другой фрагмент, если вы хотите сохранить свой текущий фрагмент в заднюю часть, чтобы он был доступен, когда пользователь нажимает кнопку «Назад», добавьте его обратно в стек, используя диспетчер фрагментов. Затем просто используйте одну и ту же строку: fragmentTransaction.replace (containerView, new Fragment(), TAG) .commit();

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(); 
     } 
    }); 
Смежные вопросы