#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. Там должна быть некоторая информация об этой проблеме.