0

我有一个 Activity 实例化一些片段:

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 中,我有一个按钮,单击该按钮时,它会向用户显示一个表单,因此他可以向该表添加信息。当用户添加信息时,我完成()活动并再次显示 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 做些什么,以便能够重新启动 Fragment 的生命周期。

有什么帮助吗?

谢谢,费利佩

4

1 回答 1

0

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

如果不是,还有另一种可能。我不知道 ViewPager 非常好,但如果它有一个在显示其片段之一时将被调用的侦听器,我不会感到惊讶。如果你让你的片段实现一个接口,让它的后代实现一个 executeQuery 方法,你可以遍历你的片段列表并在事件发生时调用它。

于 2012-05-28T10:05:46.160 回答