查看从 FirstFragment 调用 SecondFragment 的问题

2024-04-14

我正在制作一个简单的演示项目Fragments,我在其中打电话SecondFragment from FirstFragment on button click.

我毫无问题地调用了 SecondFragment,但是我getting view of both the Fragments第二个片段和第一个片段

那么我在哪里做错了?

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new FirstFragment()).commit();
        }
    }

    public static class FirstFragment extends Fragment {

        Button buttonCallSecondFragment;

        public FirstFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_first, container,
                    false);

            buttonCallSecondFragment = (Button) rootView.findViewById(R.id.button1);
            buttonCallSecondFragment.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    FragmentManager fm = getFragmentManager();
                    SecondFragment fragment = new SecondFragment();
                    FragmentTransaction ft = fm.beginTransaction();
                    ft.add(R.id.container, fragment);
                    ft.commit();
                }
            });

            return rootView;
        }
    }


    public static class SecondFragment extends Fragment {

        public SecondFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_second, container,
                    false);
            return rootView;
        }
    }
}

您需要删除第一个片段,您可以通过使用replace或者第一次打电话remove then add

为了能够按后退按钮将事务添加到后退堆栈,您可以通过调用addToBackStack(tag)在你的片段管理器上。标签可能为空。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查看从 FirstFragment 调用 SecondFragment 的问题 的相关文章

随机推荐