如何让片段的onActivityCreated方法再次运行?

时间:2012-05-28 09:56:32

标签: android android-fragments android-viewpager

我有一个活动可以实现一些片段:

List<Fragment> fragments = new ArrayList<Fragment>();
fragments.add(Fragment.instantiate(this, HomeFragment.class.getName()));
fragments.add(Fragment.instantiate(this, BorrowedFragment.class.getName()));
fragments.add(Fragment.instantiate(this, LentFragment.class.getName()));
fragments.add(Fragment.instantiate(this, PeopleFragment.class.getName()));

这些片段链接到ViewPager。每个片段都运行一个SELECT语句,并将内容显示为用户的列表。

问题是在HomeFragment中,我有一个按钮,当点击它时,它向用户显示一个Form,因此他可以向该Table添加信息。当用户添加信息时,我完成()活动并再次显示HomeFragment。 当我转到BorrowFragment时,那里没有显示任何内容。我必须转到PeopleFragment(列表的最后一个)并回到BorrowedFragment。只有这样,才会显示信息。

插入信息时我唯一能做的就是:

Button btDone = (Button) findViewById(R.id.buttonDone);
        btDone.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if(ck1.isChecked())
                    isIOwe = true;
                else
                    isIOwe = false;
                insertRecord();
                Toast.makeText(getApplicationContext(), "Record added", Toast.LENGTH_SHORT).show();
                /*FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                ft.add(Fragment.instantiate(ctx, PeopleFragment.class.getName()), "test");
                ft.commit();*/
                finish();

            }
        });

我一直想知道我是否应该对FragmentTransaction做些什么,以便能够重新开始片段的生命周期。

任何帮助?

谢谢, 菲利普

1 个答案:

答案 0 :(得分:0)

我认为在片段的getView方法中执行查询应该可以解决问题。

如果没有,还有另一种可能性。我不太了解ViewPager,但如果它有一个监听器,当它的一个片段被显示时,我就不会感到惊讶。如果你让你的片段实现一个让它的后代实现executeQuery方法的接口,你可以遍历你的片段列表并在事件发生时调用它。