Android getCurrentTab();不使用动态标签

时间:2013-10-28 23:25:23

标签: android tabs onchange

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

任何帮助都将受到高度赞赏:)

1 个答案:

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

}