我有一个活动可以实现一些片段:
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做些什么,以便能够重新开始片段的生命周期。
任何帮助?
谢谢, 菲利普
答案 0 :(得分:0)
我认为在片段的getView方法中执行查询应该可以解决问题。
如果没有,还有另一种可能性。我不太了解ViewPager,但如果它有一个监听器,当它的一个片段被显示时,我就不会感到惊讶。如果你让你的片段实现一个让它的后代实现executeQuery方法的接口,你可以遍历你的片段列表并在事件发生时调用它。