Я следую этому примеру и добавляю уведомление в макет вкладки, моя проблема заключается в том, как обновить счетчик значков на странице фрагмента, как в приложении wats. я пытаюсь ниже код, чтобы он работал нормально в деятельности макета вкладки, но я не знаю, как установить увеличение числа во фрагменте, если размер объекта увеличивается? пожалуйста, помогите в этом. мой код ниже.
ApiUtil.getServiceClass().getDiscussion(demo, RTFA + "; FedAuth=" + FedAuth).enqueue(new Callback<Discussion>() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onResponse(Call<Discussion> call, Response<Discussion> response) {
List<com.com.ideaentity.csp.daoutils.discussiondao.Result> result=response.body().getD().getResults();
discussion=result.size();
updateDiscussin(discussion);
}
@Override
public void onFailure(Call<Discussion> call, Throwable t) {
}
});
ApiUtil.getServiceClass().getMyDocs(dosurl,RTFA + "; FedAuth=" + FedAuth).enqueue(new Callback<MyDocs>() {
@Override
public void onResponse(Call<MyDocs> call, Response<MyDocs> response) {
if (response.isSuccessful()){
// myDocsList.setValue(response.body().getD().getMyDocsResults());
List<com.com.ideaentity.csp.daoutils.mydocs.Result> myDocsResultList=response.body().getD().getFiles().getResults();
documents=myDocsResultList.size();
updatevalue(documents);
}else {
}
}
@Override
public void onFailure(Call<MyDocs> call, Throwable t) {
}
});
if (getSupportActionBar() != null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
String category=Utils.getFromSharedPreference("category");
viewPager = findViewById(R.id.container);
viewPager.setAdapter(mSectionsPagerAdapter);
tabLayout =findViewById(R.id.tabs);
tabLayout.setSelectedTabIndicatorHeight(0);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
if (discussion!=null&&documents!=null){
}
}
public void updateDiscussin(Integer discussion) {
BadgeDrawable badgeDiscussion =
tabLayout.getTabAt(2).getOrCreateBadge();
badgeDiscussion.setVisible(true);
badgeDiscussion.setNumber(discussion);
badgeDiscussion.setBackgroundColor(getResources().getColor(R.color.floating_button_color));
}
private void updatevalue(Integer discussion) {
BadgeDrawable badgeDocuments =
tabLayout.getTabAt(3).getOrCreateBadge();
badgeDocuments.setVisible(true);
badgeDocuments.setNumber(discussion);
badgeDocuments.setBackgroundColor(getResources().getColor(R.color.floating_button_color));
}
badgeDiscussion.setBackgroundColor(getResources().getColor(R.color.floating_button_color));
}
В приведенном выше коде мы установили номер в объекте tablayout с активностью хоста, но я не могу использовать setnumber в классе фрагмента для обновления счетчика? например, если мы добавим некоторые данные в объект json, и число объектов увеличивается, поэтому в это время счетчик также должен увеличиваться, но счет увеличивается, он увеличивается, когда я закрываю приложение и открываю снова.
Обновление: Должен ли я добавить любой статический метод в деятельность хоста, а затем вызывать каждый фрагмент при вызове rest api?
Примечание: я использую apter recyclerview для трех фрагментовстраница для отображения данных.
Обновление 1: Я добавил ниже фрагмент кода для счетчика обновлений, но он не работает:
Integer count=myDocsResultList.size();
BadgeDrawable badgeDrawable = BadgeDrawable.create(getContext());
badgeDrawable.setNumber(count);