【问题标题】:start fragment from another fragment (Android)从另一个片段开始片段(Android)
【发布时间】:2015-12-26 11:54:10
【问题描述】:

我需要从另一个fragment 开始一个fragment

我有我的 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;
        }

我已经尝试了所有可能的方法,但没有任何办法。

【问题讨论】:

  • 就像你第一次开始一样开始。

标签: android android-fragments fragment android-fragmentactivity


【解决方案1】:

在开始另一个片段之前,如果您想将当前片段保留在后台堆栈中,以便在用户按下后退按钮时可用,请使用片段管理器将其添加到后台堆栈。然后只需使用同一行:fragmentTransaction.replace(containerView,new Fragment(), TAG).commit();

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多