0

私はセットアップしようとしてonTabChangedListner()いて、スタックオーバーフローや他のサイトを見回しましたが、どこでもほとんど同じなので、そのコードをコピーしました。これが私の現在のコードです(これはすべて on 内にあります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. 方法android.widget.TabHost.setOnTabChangedListner(android.widget.TabHost.OnTabChangeListner) in 'android.widget.TabHost'can not be applied to (com.mycompany.myapp.MainActivity.(anonymous))

どんな助けでも大歓迎です!

更新: 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
}
4

1 に答える 1

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

上記の解決策はこちらから

于 2012-08-13T09:19:00.817 に答える