如何解决如何为 Android 实现这个特殊的“AnimatedBottomNavigationBar”?方法错误
我从这个库中实现了 BottomBar https://github.com/Droppers/AnimatedBottomBar
我创建了标签 XML,它是
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tab_home"
android:icon="@drawable/ic_action_home"
android:title="@string/Home" />
<item
android:id="@+id/tab_publish"
android:icon="@drawable/ic_action_publish"
android:title="@string/Publish" />
<item
android:id="@+id/tab_map"
android:icon="@drawable/ic_action_map"
android:title="@string/Map" />
<item
android:id="@+id/tab_profile"
android:icon="@drawable/ic_action_profile"
android:title="@string/Profile" />
</menu>
并在我的活动的 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="wrap_content"
android:layout_height="wrap_content"
>
<androidx.fragment.app.FragmentContainerView
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/bottom_bar"></androidx.fragment.app.FragmentContainerView>
<nl.joery.animatedbottombar.AnimatedBottomBar
android:id="@+id/bottom_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:background="@color/button_black"
app:abb_indicatorColor="@color/instagramPink"
app:abb_indicatorAppearance="round"
app:abb_indicatorHeight="4dp"
app:abb_indicatorMargin="16dp"
app:abb_selectedIndex="1"
app:abb_selectedTabType="text"
app:abb_tabs="@menu/tabs"
app:abb_badgeTextColor="@color/instagramPink"
app:abb_tabColor="@color/instagramPink"
app:abb_tabColorSelected="@color/white"
/>
</RelativeLayout>
那么我的活动代码是
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
final FragmentManager fragmentManager = getSupportFragmentManager();
final Fragment fragment1 = new HomeFeed();
final Fragment fragment2 = new CreateEvent();
final MapsActivity fragment3 = new MapsActivity();
final Fragment fragment4 = new ProfileActivity();
binding.bottomBar.setOnTabSelectListener(item -> {
Fragment fragment;
switch (item.getItemId()) { //Error saying there is such no method as "getItemId"
case R.id.tab_home:
fragment = fragment1;
break;
case R.id.tab_publish:
fragment = fragment2;
break;
case R.id.tab_map:
fragment = fragment3;
break;
case R.id.tab_profile:
default:
Fragment = fragment4;
break;
}
fragmentManager.beginTransaction().replace(R.id.fragmentContainer,fragment).commit();
return true;
});
binding.bottomBar.setSelectedItemId(R.id.tab_home); //Error saying there is such no method as "setSelectedItemId"
}
}
但是,这两条注释行给了我一个错误,说这些方法不存在。这就是我通常使用导航栏的方式,但尽管浏览了文档,但我似乎无法找到为这个特定导航栏设置它的方法。请帮忙!
谢谢
解决方法
试试这个:
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
final FragmentManager fragmentManager = getSupportFragmentManager();
final Fragment fragment1 = new HomeFeed();
final Fragment fragment2 = new CreateEvent();
final MapsActivity fragment3 = new MapsActivity();
final Fragment fragment4 = new ProfileActivity();
binding.bottomBar.setOnTabSelectListener(item -> {
Fragment fragment;
//REPLACEMENT
switch (item.id) { //Error saying there is such no method as "getItemId"
case R.id.tab_home:
fragment = fragment1;
break;
case R.id.tab_publish:
fragment = fragment2;
break;
case R.id.tab_map:
fragment = fragment3;
break;
case R.id.tab_profile:
default:
Fragment = fragment4;
break;
}
fragmentManager.beginTransaction().replace(R.id.fragmentContainer,fragment).commit();
return true;
});
//REPLACEMENT
binding.bottomBar.selectTabById(R.id.tab_home); //Error saying there is such no method as "setSelectedItemId"
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。