设置onTabChangedListner(Android)时出错

时间:2012-08-13 08:58:04

标签: java android tabs toast

我正在尝试设置一个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();
    }
});

我收到3个错误:

  1. 未知实体OnTabChangeListner()

  2. (com.mycompany.myapp.MainActivity.(anonymous), java.lang.String,int)

  3. 没有可用的方法
  4. 方法android.widget.TabHost.setOnTabChangedListner(android.widget.TabHost.OnTabChangeListner) in 'android.widget.TabHost'can not be applied to (com.mycompany.myapp.MainActivity.(anonymous))

  5. 任何帮助将不胜感激!

    更新:这是我的整个onCreate,然后是onTabChanged方法:

    @覆盖     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 个答案:

答案 0 :(得分:0)

您发布的代码部分看起来很干净,我无法从您发布的错误消息中找到任何内容。可能是您的项目中的一些代码行可能对查找问题有点帮助。

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

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 */
    }
}

以上解决方案来自here