在App中导航:Spinner + ActionBar选项卡

时间:2013-03-21 18:38:07

标签: android android-layout android-actionbar android-spinner android-tabs

我在应用程序中实现导航时遇到问题。我想使用Spinner之类的菜单,您可以在其中选择您感兴趣的item并获取对应的数据。然后,此数据将设置为ActionBar选项卡。

App

我已经实现了微调器和制表符,但出现了一个问题。 Android,不允许在OnItemSelectedListener中使用可变变量,而我需要它。

final ActionBar.Tab tabToday= actionBar.newTab().setText("Today");
final ActionBar.Tab tabSoon = actionBar.newTab().setText("Soon");

..............................

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                switch(arg2){
                case 0:
                    tabToday.setTabListener(new CustomTabListener(MainActivity.this,"item_1", "url"));
                    tabSoon.setTabListener(new CustomTabListener(MainActivity.this,"item_1", "url_2"));

                    actionBar.addTab(tabToday);
                    actionBar.addTab(tabSoon);              
                    break;

                case 1:
                    tabToday.setTabListener(new CustomTabListener(MainActivity.this,"item_2", "url_3"));
                    tabSoon.setTabListener(new CustomTabListener(MainActivity.this,"item_2", "url_4"));

                    break;

                case 2:
                    tabToday.setTabListener(new CustomTabListener(MainActivity.this,"item_3", "url_5"));
                    tabSoon.setTabListener(new CustomTabListener(MainActivity.this,"item_3", "url_6"));
                    break;
                }
        }

问题在于我不能使用final变量,因为这种情况发生了:

enter image description here

有没有办法解决这个问题,但保持相同的导航? 感谢您的阅读,任何帮助将不胜感激。 :)

编辑: 问题不在于最终变量,但问题仍然存在:((

2 个答案:

答案 0 :(得分:1)

我不确定为什么 final 会导致该问题,但您可以通过让您的活动实现 AdapterView.OnItemSelectedListener 来避免使用该关键字而不创建匿名类

并致电

spinner.setOnItemSelectedListener(this);

答案 1 :(得分:0)

已经解决了这个问题,列表将始终为每个交互填充相同的数据。就我而言,问题出在你升级片段的时候:

        if(mFragment==null){
               mFragment = Fragment.instantiate(mActivity, mClass.getName());
  /*correct:*/ ft.replace(android.R.id.content,mFragment, mTag);
               ft.add
        }else{
/*correct:*/  ft.attach(mFragment);
        } /*notUse*/ ft.add(mFragment);