当前位置: 首页 > 知识库问答 >
问题:

设置onTabChangedListner(Android)时出错

欧阳正卿
2023-03-14

我试图设置一个onTabChangedListner(),我查看了Stack Overflow和一些其他站点,所有站点都是一样的,所以我复制了这些代码。这是我当前的代码(这都在oncreate()中)

getTabHost().setOnTabChangedListner(new onTabChangeListner() {

    @Override
    public void onTabChanged(String tabId) {
        Toast.makeText(this, "A new tab has been selected", Toast.LENGHT_SHORT).show();
    }
});

我有三个错误:

>

  • 未知实体OnTabChangeListner()

    (com.mycompany.myapp.mainactivity.(anonymony),java.lang.String,int)没有applcable方法

    “Android.Widget.TabHost”中的方法Android.Widget.TabHost.SetonTabChangedListner(Android.Widget.TabHost.OnTabChangeListner)不能应用于(com.mycompany.myapp.MainActivity.(anonymony))

    任何帮助都将不胜感激!

    更新:下面是我的整个onCreate和一个onTabChanged方法:

    @override public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(r.layout.main);

        TabHost tabHost = getTabHost();
    
        TabSpec cat1spec = tabHost.newTabSpec("Category 1");
        cat1spec.setIndicator("Category 1");
        cat1spec.setContent(R.id.tab1c);
    
        TabSpec cat2spec = tabHost.newTabSpec("Category 2");
        cat2spec.setIndicator("Category 2");
        cat2spec.setContent(R.id.tab2c);
        TabSpec cat3spec = tabHost.newTabSpec("Favourites");
        cat3spec.setIndicator("Favourites");
        cat3spec.setContent(R.id.tab3c);
    
        tabHost.addTab(cat1spec);
        tabHost.addTab(cat2spec);
        tabHost.addTab(cat3spec);
    
        getActionBar().setHomeButtonEnabled(true);
    
        tabHost.setOnTabChangedListener(this);
    }
    
    @Override
    public void onTabChanged(String tabId) {
        //Something will happends here
    }
    
  • 共有1个答案

    贺飞星
    2023-03-14

    您发布的代码部分看起来很干净,我从您发布的错误消息中找不到任何东西。项目中的几行代码可能会对发现问题有所帮助。

    请看下面的代码,检查您是否遵循了任何模式。

    TabHost tabs = (TabHost) body_view.findViewById(R.id.media_tabs);
        tabs.setup();
    
        tabs.addTab(tabs.newTabSpec(ALBUMS_TAB));
        tabs.addTab(tabs.newTabSpec(ARTISTS_TAB));
    
    
    tabs.setOnTabChangedListener(new OnTabChangeListener() {
          @Override
          public void onTabChanged(String tabId) {
            if (tabId.equals(ARTISTS_TAB)) {
              artistsFlipper.setDisplayedChild(0);
            } else if (tabId.equals(ALBUMS_TAB)) {
              albumsFlipper.setDisplayedChild(0);
            }
          }
     });
    

    public class MyTabActivity extends TabActivity implements OnTabChangeListener {
    
        private TabHost tabHost;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            /* Your onCreate code here */
    
            tabHost.setOnTabChangedListener(this);
        }
    
        /* ... */
    
        @Override
        public void onTabChanged(String tabId) {
            /* Your code to handle tab changes */
        }
    }
    

    上面解决方案来自这里

     类似资料:
    • 我包含以下外部jar: Android-support-v7-appCombat.jar Android-support-v7-mediarouter.jar google-play-services.jar

    • Hi iv'e刚刚启动了一个新应用程序,现在正在按照解析快速入门指南在此项目中设置解析。一切正常,直到我将此代码放入我的build.gradle: 然后,当我尝试运行我的应用程序时,我在gradle控制台中收到以下消息: *AGPBI: {"kind":"simple "," text ":"意外的顶级异常:"," sources ":[{ }]} AGP bi:{ " kind ":" simp

    • 问题内容: 我最近下载了Maven和遵循此给出的说明这个页面。我已经在计算机上安装了ant。现在,如果我想验证是否正确安装了Maven,这将给我以下错误:JAVA_HOME的设置不正确,但对于ANT来说也可以正常工作。 我去目录检查java.exe是否确实在该目录中,并且在那里。我检查了它们设置良好的环境变量。我重新启动系统并再次检查,但同样的问题。请让我知道我在想什么。 问题答案: JAVA_H

    • 我想通过Webview将Razorpay支付网关集成到Android中。 下面是这里提供的步骤! 我还有一个回调URL,它将被传递来处理传入的POST请求。 在通过Razorpay URL作为base_URL发送付款结帐后,我无法从webview重新控制应用程序。 有人能帮我解决整个过程中缺失的部分吗?

    • 问题内容: 我点击超级链接后有一个操作网址 在我的方法中,我有以下代码 我在表演的时候就在表演。即使正确打印为。 类: 为什么会这样呢? 问题答案: 该未初始化。您应该在操作中以某种方式对其进行初始化 更好的方法是让容器为您完成。您只需要在 那你就会有 而且您不需要解析参数请求,拦截器已经完成了此操作,这是您的操作应运行的一部分。您应该在操作中创建属性以保存参数值。 动作看起来像

    • 有人试过使用https://github.com/nepda/youtrack,吗?我正在尝试设置它,但收到错误: 该库可以在https://github.com/nepda/youtrack上找到,所以我所做的就是下载它并进行测试: