0

我在应用程序中实现导航时遇到问题。我想用Spinnerlike menu,在这里你可以选择item你感兴趣的并获得相应的数据。然后此数据将设置为 ActionBar 选项卡。

应用程序

我已经实现了微调器和选项卡,但是出现了一个问题。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变量,并且由于这种情况发生:

在此处输入图像描述

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

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

4

2 回答 2

1

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

并打电话

spinner.setOnItemSelectedListener(this);
于 2013-03-21T18:43:25.517 回答
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); 
于 2013-12-17T05:42:54.510 回答