首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReCreate片段布局

ReCreate片段布局
EN

Stack Overflow用户
提问于 2014-05-26 06:58:01
回答 1查看 662关注 0票数 0

我有actionbar选项卡,当单击一个选项卡时,我希望向我的片段添加新按钮。

这是我添加按钮的片段代码:

代码语言:javascript
复制
    Button btn;
    View myView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        int numberOfButtons= getArguments().getInt("someInt",0);
        LinearLayout view =  new LinearLayout(getActivity());
        // Inflate the layout for this fragment
        view.setOrientation(LinearLayout.VERTICAL);
        view.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
        for (int i = 0;i<numberOfButtons;i++)
        {
            btn = new Button(getActivity());
            view.addView(new Button(getActivity()));
        }
        myView = view;
        return myView;
    }

这是我的MainActivity代码,在该代码中,我要向片段发送多个按钮:

代码语言:javascript
复制
int numberOfButtons=0;
    public static FragmentA newInstance(int someInt) {

        FragmentA myFragment = new FragmentA();
        Bundle args = new Bundle();
        args.putInt("someInt", someInt);
        myFragment.setArguments(args);
        return myFragment;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar  actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        for (int i=0;i<10;i++)
        {
            ActionBar.Tab tab = actionBar.newTab().setText("Tab"+i).setTabListener(new ActionBar.TabListener() {
                @Override
                public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {

                    String tabText = (String)tab.getText();
                    String asd = (String)(tabText.substring(3,tabText.length()));
                    numberOfButtons = Integer.parseInt(asd);
                    FragmentA fragmentA = newInstance(numberOfButtons);
                    FragmentManager manager = getFragmentManager();
                    FragmentTransaction transaction = manager.beginTransaction();
                    transaction.add(R.id.mainLayout,fragmentA,"fragA");
                    transaction.commit();
                }

                @Override
                public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

                }

                @Override
                public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

                }
            });
            actionBar.addTab(tab);
        }
    }

这段代码添加了按钮,但是这里有一个问题。当单击Tab1时,将一个按钮添加到片段中。单击Tab2时,将向片段添加两个按钮,但不移除由Tab1添加的第一个按钮。其中一个新的按钮被放置在上面。

在添加新的片段之前,是否有任何方法重置片段布局或删除旧的片段项?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-26 08:32:45

从您的代码中可以看出,您只是在彼此之间添加片段的实例。Tab1添加的按钮不会被移除,因为Tab1仍然在后台.

在调用transaction.remove()添加新片段之前,尝试使用transaction.add()方法删除前一个片段.

还有一个transaction.replace()方法,它同时执行两个操作。也许这也值得一试。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23864406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档