я создаю TabItems
динамически, и я назначаю новой вкладке созданный значок, но проблема заключается в следующем: когда я создаю другую вкладку 'снова' динамически, предыдущие TabItem
значки просто исчезают !! почему :(?
вот картинка, когда я не создал новую вкладку динамически:
https://drive.google.com/file/d/1C80e-Yldlu6asL2H_vCIbwH7cY7Farpn/view?usp=sharing
и вот изображение, когда я создаю еще один с иконкой:
https://drive.google.com/file/d/1i-IXudvYayLf9mGhBGQmyCkjeVkN3xXs/view?usp=sharing
Вы можете увидеть разницу :(.
код для создания первых трех динамических tabitems
с такими значками выглядит следующим образом:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page_drawer);
this.tabLayout = findViewById(R.id.tab_layout);
this.viewPager = findViewById(R.id.view_pager);
tabLayout.setupWithViewPager(viewPager);
SetUpViewPager(viewPager);
this.toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
NavigationView navigationView = findViewById(R.id.navigation_view);
navigationView.setItemIconTintList(null);
tabLayout.setupWithViewPager(viewPager);
tabLayout.getTabAt(0).setIcon(R.drawable.lock);
tabLayout.getTabAt(1).setIcon(R.drawable.contacts);
tabLayout.getTabAt(2).setIcon(R.drawable.info);
вот мой код для создания нового TabItems
в TabLayout
public void create_user_detail_tab(UserObject userObject) {
MyViewPagerAdapter Adapter = new MyViewPagerAdapter(getSupportFragmentManager());
UserDetailFragment userDetailFragment = new UserDetailFragment();
// the code for AddFragmentPage would be in the next session , i'll paste it's function for you
Adapter.AddFragmentPage(userDetailFragment,userObject.getName());
byte[] decodedString = Base64.decode(userObject.getImage(),Base64.NO_WRAP);
InputStream inputStream = new ByteArrayInputStream(decodedString);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Bitmap circleBitmap = CircleBitmapConverter.makeCircle(bitmap);
Drawable d = new BitmapDrawable(getResources(), circleBitmap);
tabLayout.getTabAt(tabs_number).setIcon(d);
// tabs_number is number of tabs wich are not changing not dynamic
TabLayout.Tab tab = tabLayout.getTabAt(tabs_number);
tab.select();
// i increase the number of tabs present each time a new one is created ( pretty logical )
tabs_number++;
}
и это AddFragmentPage (который я сказал в предыдущем коде, я включу его код для вас, если необходимо:
public void AddFragmentPage(Fragment frag,String title) {
addToFragments(frag);
addToFragmentsTitle(title);
MyViewPagerAdapter myViewPagerAdapter = new MyViewPagerAdapter(getSupportFragmentManager());
myViewPagerAdapter.notifyDataSetChanged();
viewPager.setAdapter(myViewPagerAdapter);
}