0

I follow this example and adding notification to tab layout,my issue is how to update badge counter in fragment page like Whats app. I tried below code so its working fine in tab layout activity but I don't know how to set number increment in fragment if object count size is increased? Please help with this.

This is my code:

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));
}

In above code we have set number in tablayout object with in host activity but i'm not able use setnumber in fragment class to update count?

For example if we add some data into json object and object count is increase so at that time counter should also get increase but count is increase, it increase when I close the application and open again.

Update: should I add any static method in host activity and then call in every fragment while calling rest api?

Note: i am using recyclerview apter for three fragment page to show the data.

Update 1: I added below code in fragment for update count but its not working:

 Integer count=myDocsResultList.size();
                BadgeDrawable badgeDrawable = BadgeDrawable.create(getContext());
                badgeDrawable.setNumber(count);
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
007
  • 3
  • 2
  • 6

0 Answers0