首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TabItem: ClickListener不工作(Android/ClickListener)

TabItem: ClickListener不工作(Android/ClickListener)
EN

Stack Overflow用户
提问于 2019-04-20 21:10:35
回答 3查看 729关注 0票数 1

嗯,我想要处理的"ClickListeners“(我想要处理的) "TabItems”不幸不起作用。

代码语言:javascript
复制
TabItem TabItem1;

        View.OnClickListener Klick = new View.OnClickListener() {
        public void onClick(View v) {
            switch(v.getId()) {
                case R.id.guiTabItem1:
                    Toast.makeText(MainActivity.this,"Lol wtf asdsadfdfs", Toast.LENGTH_LONG);
                    break;
                case R.id.guiTabItem2:
                    // test
                    break;
            }
        }
    };

该应用程序加载,但按下标签没有任何影响。我还尝试用"setOnClickListener“将单击事件分配给选项卡。这会导致坠机。

代码语言:javascript
复制
tabItem1.setOnClickListener(Klick);

以下的尝试也没有奏效:

代码语言:javascript
复制
tabItem1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"Lol", Toast.LENGTH_LONG);
            }
        });

这是整个代码片段。提前感谢!

代码语言:javascript
复制
public class MainActivity extends Activity {

    ListView Liste;
    MediaPlayer Player;
    TabLayout guiTopNav;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

TabItem TabItem1 = findViewById(R.id.guiTabItem1);

View.OnClickListener Klick = new View.OnClickListener() {
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.guiTabItem1:
                Toast.makeText(MainActivity.this,"Lol wtf asdsadfdfs", Toast.LENGTH_LONG);
                break;
            case R.id.guiTabItem2:
                // it was the second button
                break;
        }
    }
};

tabAndreas.setOnClickListener(Klick);

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-21 10:38:58

所以我想出了一个解决办法。显然,setOnClickListener()与TabItems或TabLayouts不兼容。相反,使用以下解决方案为选项卡创建单击函数。当然,在您的设计器中,三个TabItems必须分类在一个TabLayout下面。

代码语言:javascript
复制
    // #################################################################### GUI

    TabLayout guiTabs;
    guiTabs = findViewById(R.id.guiTopNav);
    guiTabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                switch(tab.getPosition()) {
                    case 0: Toast.makeText(MainActivity.this, "Tab 1", Toast.LENGTH_LONG).show();
                    break;
                    case 1: Toast.makeText(MainActivity.this, "Tab 2", Toast.LENGTH_LONG).show();
                    break;
                    case 2: Toast.makeText(MainActivity.this, "Tab 3", Toast.LENGTH_LONG).show();
                    break;
                }
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
票数 2
EN

Stack Overflow用户

发布于 2019-04-20 22:36:22

你已经从视图And中得到tabItem1了吗?

代码语言:javascript
复制
/*Example you need to do it with the tabitem*/
button = (Button) findViewById(R.id.but);
票数 0
EN

Stack Overflow用户

发布于 2019-04-21 02:20:25

在声明TabItem对象之后,您必须通过使用findViewById method.This方法将TabItem视图分配给它,通过它的id将找到正确的视图并返回视图。

findViewById(R.id.tabitemview);TabItem tabItem1 =

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55777767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档