我是Android的新手,我一直试图获取当前标签的ID。事实是,这些选项卡是动态创建的,以及它们的内容。当我尝试使用此代码时,它表示不能引用内部类中的非final变量。
我尝试将current_tab_id转换为字符串,使用parseInt,但它崩溃了应用程序。
Tabs.setOnTabChangedListener(new OnTabChangeListener(){
@Override
public void onTabChanged(String tabId) {
current_tab_id = tabId; << get tag as string works fine
Tabs.getCurrentTab(); //< the error occurs
}
});
任何帮助都将受到高度赞赏:)
答案 0 :(得分:0)
我相信您收到此错误消息的原因是您在“new OnTabChangedListener()”范围之外声明了您的TabHost变量。在这种情况下,Java将使用超出范围的引用进行编译,但前提是该变量被声明为final,以便保证变量存在于内存中。
尝试实现OnTabChangeListener,然后声明一个全局类变量,而不是在onCreate方法中声明它。
public class MainActivity extends Activity implements OnTabChangeListener {
TabHost myTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
myTabHost.setOnTabChangedListener(this);
}
...
@Override
public void onTabChanged(String arg0) {
myTabHost.getCurrentTab();
}
}