java - TabLayout OnPageChangeListener 不能应用于“()”
问题描述
我在构建项目时在我的项目中遇到此错误,请任何人帮助
这是代码:-
'TabLayoutOnPageChangeListener(com.google.android.material.tabs.TabLayout)' in 'com.google.android.material.tabs.TabLayout.TabLayoutOnPageChangeListener' cannot be applied to '()'
这是我的java类
package com.heven.meme2;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
import com.heven.meme2.adapter.ViewPagerAdapter;
//import android.widget.TabLayout;
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
ViewPagerAdapter pagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
addTabs();
}
private void init() {
viewPager = findViewById(R.id.viewPager);
tabLayout = findViewById(R.id.tabLaout);
}
private void addTabs(){
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_home));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_search));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_add));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_heart));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_home_fill));
tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
ViewPager.OnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener());
tabLayout.getTabAt(0).setIcon(R.drawable.ic_home_fill);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
switch (tab.getPosition()){
case 0:
tabLayout.getTabAt(0).setIcon(R.drawable.ic_home_fill);
break;
case 1:
tabLayout.getTabAt(1).setIcon(R.drawable.ic_search);
break;
case 2:
tabLayout.getTabAt(2).setIcon(R.drawable.ic_add);
break;
case 3:
tabLayout.getTabAt(3).setIcon(R.drawable.ic_heart_fill);
break;
case 4:
tabLayout.getTabAt(4).setIcon(android.R.drawable.ic_media_play);
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
switch (tab.getPosition()){
case 0:
tabLayout.getTabAt(0).setIcon(R.drawable.ic_home);
break;
case 1:
tabLayout.getTabAt(1).setIcon(R.drawable.ic_search);
break;
case 2:
tabLayout.getTabAt(2).setIcon(R.drawable.ic_add);
break;
case 3:
tabLayout.getTabAt(3).setIcon(R.drawable.ic_heart);
break;
case 4:
tabLayout.getTabAt(4).setIcon(android.R.drawable.ic_media_pause);
break;
}
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
switch (tab.getPosition()){
case 0:
tabLayout.getTabAt(0).setIcon(R.drawable.ic_home_fill);
break;
case 1:
tabLayout.getTabAt(1).setIcon(R.drawable.ic_search);
break;
case 2:
tabLayout.getTabAt(2).setIcon(R.drawable.ic_add);
break;
case 3:
tabLayout.getTabAt(3).setIcon(R.drawable.ic_heart_fill);
break;
case 4:
tabLayout.getTabAt(4).setIcon(android.R.drawable.ic_media_play);
break;
}
}
});
}
}
这是我的 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/tabLaout"
android:id="@+id/viewPager"/>
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabLaout"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
实际上,我正在关注 youtube 上的教程,它对他有用,但对我无效。
我也通过引用上一个问题添加了 android.material:material:1.4.0" 但它对我没有用。
解决方案
由于文档TabLayoutOnPageChangeListener
中没有空的构造函数
替换这一行:
ViewPager.OnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener());
有了这个:
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
推荐阅读
- powerbi - DAX - 如何根据索引计算两个表中缺少的行
- node.js - 在节点 js 中导入
- javascript - 使用 document.createElement 测试该元素的 scrollHeight 和 clientHeight 时,值始终为 0
- ubuntu - Ubuntu 终端中 Vim 的边缘未填充颜色方案
- java - 仅当 BufferedReader 中有数据时如何创建文件?
- xml - 使用 xslt 1.0 从多节点 xml 获取特定值
- postgresql - PostGis -> ST_Contains:如何检查表的哪个 BBox 是当前 BBox
- javascript - 在刷新页面上找不到 React js/空白页面
- gradle - 如何在 gradle 复合构建中包含 3 个目录和 2 个可交付成果?
- metadata - 编辑镶木地板文件元数据