TabItem: ClickListener не работает (Android / Java)

#java #android #tabs

#java #Android #вкладки

Вопрос:

Ну, мои «ClickListeners» для определенных «TabItems», которые я хотел бы обработать, к сожалению, не работают.

 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». Это приводит к сбою.

 tabItem1.setOnClickListener(Klick);
  

И следующая попытка также не сработала:

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

Вот весь фрагмент кода. Заранее спасибо!

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

}
  

Комментарии:

1. Попробуйте установить tabItem1.setOnClickListener(this); а затем реализовать в своем классе view.onclicklistner

2. @MuhammadImran Спасибо за ваш быстрый ответ! Как мне реализовать «Просмотр. OnClickListener» в моем основном классе (общедоступный класс MainActivity расширяет активность)?

Ответ №1:

Итак, я разработал решение. По-видимому, setOnClickListener() несовместим с TabItems или TabLayouts. Вместо этого используйте следующее решение для создания функции щелчка для вкладок. Конечно, три TabItems должны быть отнесены к одной таблице в вашем конструкторе.

     // #################################################################### 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:

И вы уже получаете tabItem1 из viewbyid?

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

Комментарии:

1. Спасибо за ваш ответ. Я уже сделал это, конечно. К сожалению, установка прослушивателя кликов постоянно приводит к сбою приложения. Я добавил некоторый код выше! 🙂

Ответ №3:

После объявления объекта TabItem вы должны назначить ему представление TabItem с помощью метода findViewById .Этот метод найдет правильное представление по его идентификатору и вернет представление.

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

Комментарии:

1. Спасибо за ваш ответ. Я уже сделал это, конечно. К сожалению, установка прослушивателя кликов постоянно приводит к сбою приложения. Я добавил некоторый код выше! 🙂

2. Попробуйте проанализировать ошибку, проверив представление logcat. Там должна быть некоторая информация об этой проблеме.