简体   繁体   English

TabItem:ClickListener不起作用(Android / Java)

[英]TabItem: ClickListener does not work (Android/Java)

Well, my "ClickListeners" for certain "TabItems" which I would like to handle do not work unfortunately. 好吧,我要处理的某些“ TabItems”的“ ClickListeners”无法正常工作。

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;
            }
        }
    };

The app loads but pushing on a tab has no effect. 应用程序已加载,但按选项卡上的按钮无效。 I also tried assigning the click event to the tabs with "setOnClickListener". 我还尝试使用“ setOnClickListener”将click事件分配给选项卡。 This results in a crash. 这会导致崩溃。

tabItem1.setOnClickListener(Klick);

And the following attempt also did not work: 并且以下尝试也无效:

tabItem1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"Lol", Toast.LENGTH_LONG);
            }
        });

Here's the whole code snippet. 这是整个代码段。 Thanks in advance! 提前致谢!

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);

}

So, I worked out a solution. 因此,我制定了解决方案。 Apparently, the setOnClickListener() is not compatible with TabItems or TabLayouts. 显然,setOnClickListener()与TabItems或TabLayouts不兼容。 Instead, use the following solution to create a click function for tabs. 而是,使用以下解决方案为选项卡创建单击功能。 Of course, three TabItems have to be categorized under one TabLayout in your designer. 当然,必须在设计器中将三个TabItem归类为一个TabLayout。

    // #################################################################### 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) {

            }
        });

And you already get the tabItem1 from the viewbyid? 并且您已经从viewbyid获取tabItem1了吗?

/*Example you need to do it with the tabitem*/
button = (Button) findViewById(R.id.but);

After declaring the TabItem object you have to assign the TabItem view to it by using the findViewById method.This method will find the correct view by it's id and will return the view. 声明TabItem对象后,您必须使用findViewById方法为其分配TabItem视图,该方法将通过其ID找到正确的视图并返回该视图。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM