Android:确定片段中的选定操作栏选项卡

Wyoskibum

我正在一个项目中,我有要在列表视图中显示的数据。我的数据有六个类别,这些类别由数据库中包含数字0-5的文本字段标识。我创建了一个启用了选项卡导航的操作栏。我有所有项目的标签,以及6个六个类别中的每一个,总共有7个标签。

我创建了一个ListFragment来显示数据。我为每个选项卡创建了一个ListFragment的实例,并通过选项卡侦听器更改了选项卡。我想按类别过滤数据,并且我需要一种方法来确定哪个选项卡实例化了ListFragment。

将类别传递给ListFragment的最佳方法是什么?

这是我的MainActivity:

public class MainActivity extends ActionBarActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Initialize action bar
    final ActionBar actionBar = getSupportActionBar();

    // set action bar defaults
    actionBar.setDisplayHomeAsUpEnabled(false);
    actionBar.setDisplayUseLogoEnabled(true);;
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // set up action bar tabs
    Tab AllTab = actionBar.newTab().setText("All Items");
    Tab Cat0Tab = actionBar.newTab().setText("Category 0");
    Tab Cat1Tab = actionBar.newTab().setText("Category 1");
    Tab Cat2Tab = actionBar.newTab().setText("Category 2");
    Tab Cat3Tab = actionBar.newTab().setText("Category 3");
    Tab Cat4Tab = actionBar.newTab().setText("category 4");
    Tab Cat5Tab = actionBar.newTab().setText("Category 5");                     

    // create the fragments for each tab
    ListFragment allFragment = new ItemListFragment();
    ListFragment cat0Fragment = new ItemListFragment(); 
    ListFragment cat1Fragment = new ItemListFragment();
    ListFragment cat2Fragment = new ItemListFragment();
    ListFragment cat3Fragment = new ItemListFragment();
    ListFragment cat4Fragment = new ItemListFragment();
    ListFragment cat5Fragment = new ItemListFragment();

    // set the tab listener for each tab
    AllTab.setTabListener(new MyTabsListener(allFragment));
    Cat0Tab.setTabListener(new MyTabsListener(cat0Fragment));
    Cat1Tab.setTabListener(new MyTabsListener(cat1Fragment));
    Cat2Tab.setTabListener(new MyTabsListener(cat2Fragment));
    Cat3Tab.setTabListener(new MyTabsListener(cat3Fragment));
    Cat4Tab.setTabListener(new MyTabsListener(cat4Fragment));
    Cat5Tab.setTabListener(new MyTabsListener(cat5Fragment));       

    // Add tabs to action bar
    actionBar.addTab(AllTab);
    actionBar.addTab(Cat0Tab);
    actionBar.addTab(Cat1Tab);
    actionBar.addTab(Cat2Tab);
    actionBar.addTab(Cat3Tab);
    actionBar.addTab(Cat4Tab);
    actionBar.addTab(Cat5Tab);

    if (savedInstanceState != null) {
        actionBar.setSelectedNavigationItem(savedInstanceState.getInt("tabState"));
    }   
}   

class MyTabsListener implements ActionBar.TabListener {
    private Fragment fragment;

    public MyTabsListener(ListFragment fragment) {
        this.fragment = fragment;
    }

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        ft.replace(android.R.id.content, fragment);;    
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {

        if (fragment != null) {
            FragmentManager fm = getSupportFragmentManager();
            if (fm.getBackStackEntryCount()>0) {
                fm.popBackStack(fm.getBackStackEntryAt(0).getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
            }
            ft.remove(fragment);
        }           
    }

    @Override
    public void onTabReselected(Tab tab,FragmentTransaction ft) {
        // TODO Auto-generated method stub      
    }       
}

这是ItemsListFragment类的onActivityCreated方法:

    @Override
public void onActivityCreated(Bundle savedState) {
    super.onActivityCreated(savedState);

    mActivity = getActivity();
    db = new DataAdapter(mActivity);
    db.open();      

    // Get all of the records from the database and create the materials ListAdapter
    switch(Integer.parseInt(mTag)) {
    case 6:
        cursor = db.getAllRecords();
        break;
    default:
        cursor = db.getRecordCat(mTag);
        break;
    }

    String[] from = new String[] { DataAdapter.KEY_TITLE };
    int[] to = new int[] {R.id.item_title }; 


    // Now create an array adapter and set it to display using our row
    items = new MyListAdapter(getActivity(), R.layout.item_cell, cursor, from, to);


    // get the listview
    ListView listview = getListView();
    listview.setAdapter(items);
}

我尝试创建参数并将其附加到每个片段,但它总是返回创建的最后一个片段的编号。我已经研究了回调,但是由于值是动态的(取决于选择了哪个标签),因此我不确定如何进行处理。

任何想法或建议将不胜感激。

伊利亚·科根(Ilya Kogan)

我认为使每个片段知道其编号的最佳方法是将数字作为参数传递给该片段的构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从操作栏选项卡开始片段

来自分类Dev

在Android操作栏选项卡和选项卡侦听器中使用片段时发生ClassCastException

来自分类Dev

当片段显示在带有导航选项卡的操作栏中时,加载数据

来自分类Dev

带有折叠工具栏的片段中的Android选项卡

来自分类Dev

带有折叠工具栏的片段中的Android选项卡

来自分类Dev

ANDROID:API 21操作栏选项卡

来自分类Dev

如何在TabbedActivity Android中的操作栏中向每个选项卡添加图标

来自分类Dev

选项卡中不显示操作栏

来自分类Dev

更改方向时操作栏选项卡中的错误

来自分类Dev

如何更改Android操作栏v7中选项卡的样式(颜色)?

来自分类Dev

如何在Android的操作栏选项卡中删除此气泡(指示灯)?

来自分类Dev

Android片段中的导航抽屉+滑动选项卡

来自分类Dev

菜单栏中的Android水平滚动选项卡

来自分类Dev

填充listview片段选项卡android

来自分类Dev

扩展片段的类中的选项卡

来自分类Dev

扩展片段的类中的选项卡

来自分类Dev

在Xcode 6中设置选项卡栏项目选定的图像

来自分类Dev

使用情节提要在选项卡栏控制器中设置选定的图像

来自分类Dev

使用Storyboard ios7在选项卡栏控制器中设置选定的图像

来自分类Dev

突出显示菜单栏 <li> 标签中的选定选项卡

来自分类Dev

Android工具栏选项卡

来自分类Dev

如何在运行时动态设置带有片段的操作栏中可滑动选项卡的数量

来自分类Dev

如何设置选项卡出现在操作栏中的肖像旁的操作按钮旁边

来自分类Dev

按下活动操作栏后退按钮时如何转到上一个选定的选项卡

来自分类Dev

使用操作栏中存在的edittext过滤选项卡片段中的listitem

来自分类Dev

动态更改片段选项卡主机中的片段?

来自分类Dev

动态更改片段选项卡主机中的片段?

来自分类Dev

片段中的选项卡布局(不会显示片段)

来自分类Dev

Android如何突出显示所选操作栏选项卡的drawable

Related 相关文章

  1. 1

    从操作栏选项卡开始片段

  2. 2

    在Android操作栏选项卡和选项卡侦听器中使用片段时发生ClassCastException

  3. 3

    当片段显示在带有导航选项卡的操作栏中时,加载数据

  4. 4

    带有折叠工具栏的片段中的Android选项卡

  5. 5

    带有折叠工具栏的片段中的Android选项卡

  6. 6

    ANDROID:API 21操作栏选项卡

  7. 7

    如何在TabbedActivity Android中的操作栏中向每个选项卡添加图标

  8. 8

    选项卡中不显示操作栏

  9. 9

    更改方向时操作栏选项卡中的错误

  10. 10

    如何更改Android操作栏v7中选项卡的样式(颜色)?

  11. 11

    如何在Android的操作栏选项卡中删除此气泡(指示灯)?

  12. 12

    Android片段中的导航抽屉+滑动选项卡

  13. 13

    菜单栏中的Android水平滚动选项卡

  14. 14

    填充listview片段选项卡android

  15. 15

    扩展片段的类中的选项卡

  16. 16

    扩展片段的类中的选项卡

  17. 17

    在Xcode 6中设置选项卡栏项目选定的图像

  18. 18

    使用情节提要在选项卡栏控制器中设置选定的图像

  19. 19

    使用Storyboard ios7在选项卡栏控制器中设置选定的图像

  20. 20

    突出显示菜单栏 <li> 标签中的选定选项卡

  21. 21

    Android工具栏选项卡

  22. 22

    如何在运行时动态设置带有片段的操作栏中可滑动选项卡的数量

  23. 23

    如何设置选项卡出现在操作栏中的肖像旁的操作按钮旁边

  24. 24

    按下活动操作栏后退按钮时如何转到上一个选定的选项卡

  25. 25

    使用操作栏中存在的edittext过滤选项卡片段中的listitem

  26. 26

    动态更改片段选项卡主机中的片段?

  27. 27

    动态更改片段选项卡主机中的片段?

  28. 28

    片段中的选项卡布局(不会显示片段)

  29. 29

    Android如何突出显示所选操作栏选项卡的drawable

热门标签

归档