我有一个MainActivity
,其中包含一个带有两个片段的标签栏:MainFragment
和WishlistFragment
。它们都延伸为ListFragment
。
当有人触摸选项菜单中的菜单项时,我希望片段中的显示的ListView使用名为LazyAdapter adapter
的自定义适配器刷新其列表。
所以在这里我想要刷新我的MainActivity
代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_edit:
// find out which fragment is showing here
// refresh the fragment's listview here
// adapter.notifyDataSetChanged();
return true;
}
}
我该怎么做?我不知道如何调用片段以及如何确定显示哪个片段。
以下是我在MainActivity
中设置标签的方式:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionBar.addTab(actionBar.newTab().setText("Main").setTabListener(this));
actionBar.addTab(actionBar.newTab().setText("Wishlist").setTabListener(this));
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// When the given tab is selected, show the tab contents in the container
ListFragment newfragment = null;
switch (tab.getPosition() + 1)
{
case 1:
newfragment = new MainFragment();
break;
case 2:
newfragment = new WishlistFragment();
break;
}
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, newfragment)
.commit();
}
答案 0 :(得分:4)
我该怎么做?
第1步:修复onTabSelected()
的实施。每次用户选择选项卡时,您都不希望创建新片段。相反,您希望有两个片段,由数据成员中的活动保留,并使用replace()
事务中的那些片段。
步骤2:如果需要,请在getSelectedNavigationIndex()
上调用ActionBar
,使用它来选择您需要的两个片段中的哪一个(从上面步骤1中提到的数据成员中获取),以及在片段上调用一些方法来做你想做的事。