0

我对 android 很陌生,我一直在尝试获取当前选项卡的 id。问题是,这些选项卡及其内容都是动态创建的。当我尝试使用此代码时,它说不能引用内部类中的非最终变量

我尝试使用 parseInt 将 current_tab_id 转换为字符串,但它使应用程序崩溃。

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
                }
            });

任何帮助将不胜感激:)

4

1 回答 1

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();
    }

}
于 2013-10-29T00:21:09.957 回答