简体   繁体   English

从另一个片段开始片段(Android)

[英]start fragment from another fragment (Android)

i need to start a fragment from another fragment . 我要开始一个fragment从另一个fragment

i have my MainActivity 我有我的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. 我开始了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) {

            }
        });

I need that when the button is clicked start the Passeios extends Fragment 我需要单击按钮时启动Passeios扩展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. 我已经尝试了所有可能的方法,但是没有任何效果。

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(); 然后只需使用同一行:fragmentTransaction.replace(containerView,new Fragment(),TAG).commit();

GuiaDaCidade 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();
        }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM