我在应用程序中实现导航时遇到问题。我想使用Spinner
之类的菜单,您可以在其中选择您感兴趣的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
变量,因为这种情况发生了:
有没有办法解决这个问题,但保持相同的导航? 感谢您的阅读,任何帮助将不胜感激。 :)
编辑: 问题不在于最终变量,但问题仍然存在:((
答案 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);