如何从活动中初始化片段?

时间:2016-01-05 10:40:29

标签: android android-fragments

我有一个主菜单并创建了fragment及其布局。 现在,当用户按下主菜单上的按钮时,我似乎无法启动fragment。 主菜单有自己的布局。 无论如何我现在可以从button初始化它?

Button bt = (Button)findViewById(R.id.button1);

    bt.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainMenu.this, ExercisesFragment.class));

        }
    });
}

我试过这个,但它说错误

Fragment cannot be cast to android.app.Activity

3 个答案:

答案 0 :(得分:3)

使用片段管理器添加片段:

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
ExercisesFragment fragment = new ExercisesFragment();
fragmentTransaction.replace(R.id.fragment_container, fragment);
fragmentTransaction.commit();

详细了解片段,从这里开始:

http://developer.android.com/guide/components/fragments.html

答案 1 :(得分:0)

  FragmentTransaction ft = a.getSupportFragmentManager().beginTransaction();
    ft.add(R.id.main_fragment, your_fragment);
    ft.addToBackStack("ifneeded");
    ft.commit();

答案 2 :(得分:0)

你做错了! 意图不用于加载片段。 解决方案是使用 fragment transactions 动态加载你想要聚焦的片段。

以下是您需要做的事情:

  1. 在您的活动布局中包含容器 示例:假设我的活动的布局资源为activity_main.xml,我将有一个容器 like so

  2. 按照 this 指南创建片段

  3. 假设您已经有一个名为AbcFragment的片段设置,只要用户点击按钮,就可以使用片段事务将片段加载到您刚刚创建的容器中:

  4. 
        bt.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                getFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment-container, new AbcFragment)
                    .commit();
            }
    
        });