【问题标题】:Android getCurrentTab(); dont work with dynamic tabsAndroid 获取当前选项卡();不使用动态标签
【发布时间】:2013-10-28 23:25:22
【问题描述】:

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

任何帮助将不胜感激:)

【问题讨论】:

  • 你在用Tabs.getCurrentTab();做什么?指任何变量?然后int x = Tabs.getCurrentTab();
  • 哦,眼睛错了 - 抱歉 :) 但事实是我确实将它分配给了一个变量,只是没有在这里复制它。

标签: android tabs onchange


【解决方案1】:

我相信您收到此错误消息的原因是您在“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();
    }

}

【讨论】:

    猜你喜欢
    • 2014-09-12
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多