应用程序在安卓工作室的Emulator中一直停止运行



我一直在YouTube上学习关于选项卡布局的教程,当我完成教程并运行应用程序时,应用程序一直停止运行。所以,我打开我的日志猫看看出了什么问题,它说:";由java.lang.ClassCastException引起:androidx.viewpager.widget.viewpager无法转换为com.google.android.material.tabs.TabLayout"。我找不到什么";不能强制转换为";意思是,但找不到任何解释它的文件。

private Toolbar toolbar;
private ViewPager viewPager;
private TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = findViewById(R.id.toolbarClipBridge);
setContentView(R.layout.activity_main);
viewPager = findViewById(R.id.viewpagerClipBridge);
tabLayout = findViewById(R.id.viewpagerClipBridge);
fragmentDevices fragmentDevices = new fragmentDevices();
fragmentSyncActivity fragmentSyncActivity = new fragmentSyncActivity();
fragmentSettings fragmentSettings = new fragmentSettings();
ViewPageAdapter viewPageAdapter = new ViewPageAdapter(getSupportFragmentManager(), 0);
viewPageAdapter.addFragment(fragmentDevices, "Devices");
viewPageAdapter.addFragment(fragmentSyncActivity, "Sync Activity");
viewPageAdapter.addFragment(fragmentSettings, "Settings");
viewPager.setAdapter(viewPageAdapter);
tabLayout.getTabAt(0).setIcon(R.drawable.ic_baseline_devices_24);
tabLayout.getTabAt(1).setIcon(R.drawable.ic_baseline_sync_24);
tabLayout.getTabAt(2).setIcon(R.drawable.ic_baseline_settings_24);
}
private class ViewPageAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments = new ArrayList<>();
private List<String> fragmentTitle = new ArrayList<>();
public ViewPageAdapter(@NonNull FragmentManager fm, int behavior) {
super(fm, behavior);
}
public void addFragment(Fragment fragment, String title){
fragments.add(fragment);
fragmentTitle.add(title);
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitle.get(position);
}
}

Logcat:

引起原因:java.lang.ClassCastException:androidx.viewpager.widget.viewpager无法转换为com.google.android.material.tab.Layout

我的logcat 的图像

在行中:

viewPager = findViewById(R.id.viewpagerClipBridge);
tabLayout = findViewById(R.id.viewpagerClipBridge);

代码试图查看activity_main.xml文件,并找到一个id为R.id.viewpagerClipBridge的XML对象。XML对象的类型可能是ViewPager。

在下面的一行中,代码再次查找XML文件。同样,使用idR.id.viewpagerClipBridge,代码尝试将返回值设置为TabLayout类型的变量tab layout

由于ViewPager的类型!=TabLayout的类型,不能将其强制转换为该类型。

我认为您在第二行findViewById中使用了错误的id。调查您的activity_main.xml并查找TabLayout的id。

最新更新