1

我有一个MainActivity包含两个片段的标签栏:MainFragmentWishlistFragment. 它们都扩展为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();
}
4

1 回答 1

4

我怎样才能做到这一点?

第 1 步:修复onTabSelected(). 您不希望每次用户选择选项卡时都创建一个新片段。相反,您希望有两个片段,由数据成员中的活动持有,并在replace()事务中使用这些片段。

步骤#2:当需要时,调用getSelectedNavigationIndex()ActionBar使用它来选择你需要的两个片段中的哪一个(从上面步骤#1 中提到的数据成员中获得),并在片段上调用一些方法来做你想做的事。

于 2012-11-02T21:15:27.260 回答