从 TabHost 片段中更新徽章视图



我在一个活动中有一个 Tabhost,它在每个选项卡中托管片段。片段具有一个填充了一些元素的列表视图。

每个选项卡都有一个徽章,用于反映片段列表中项目的数量。我正在使用来自图书馆徽章库的徽章。现在,列表中的项目可能会在操作时更改(例如删除或添加)。

我希望每个选项卡的徽章都随着其列表中的每次插入或删除而更新。我尝试使用以下代码在列表中每次更新时添加新徽章:-

TabWidget tabs = (TabWidget)  getActivity().findViewById(android.R.id.tabs);
BadgeView allBadge = new BadgeView(getActivity(), tabs, 2);
BadgeView learntBadge = new BadgeView(getActivity(), tabs, 1);
BadgeView newBadge = new BadgeView(getActivity(), tabs, 0);
allBadge.setText(String.valueOf(allWords.getCount()));
learntBadge.setText(String.valueOf(learntWords.getCount()));
newBadge.setText(String.valueOf(newWords.getCount()));
allBadge.toggle();
learntBadge.toggle();
newBadge.toggle();

但这没有用。猜猜我在这里做错了什么?

显示在 TabHost 选项卡上的锁屏提醒视图可以成为选项卡主机所属活动的类成员。Activity 类可以具有更新成员函数,该函数将要由锁屏提醒视图显示的文本作为输入,并使用函数输入更新这些锁屏提醒视图显示的文本。在片段端,片段可以通过 getActivity 获取父活动的句柄,并在传递要在锁屏提醒视图上显示的新值的同时调用活动的更新成员函数。

将徽章视图添加到活动

void addBadges()
{
    TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs);
    Badge1 = new BadgeView(this, tabs, 2);
    Badge2 = new BadgeView(this, tabs, 1);
    Badge3 = new BadgeView(this, tabs, 0); 
}

更新活动中的徽章视图的功能

public void UpdateBadgeView( String newString1, String newString2, String newString3 )
{
    Badge1.setText(newString1);
    Badge2.setText(newString2);
    Badge3.setText(newString3);
}

从片段更新徽章视图的调用

((MyActivityClass) getActivity()).UpdateBadgeView( text1, text2, text3 );

最新更新