我在一个活动中有一个Tabhost,它在每个标签中托管片段。片段有一个列表视图,其中填充了一些元素。
每个标签都有一个徽章,它反映了片段中列表中的项目数。我正在使用库Badge Library中的徽章。现在,列表中的项目可能会根据操作进行更改(例如删除或添加)。
我希望每个标签的徽章都会在其列表中的每次插入或删除时更新。每次使用以下代码在列表中进行更新时,我都尝试添加新的徽章: -
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();
但是这没用。任何猜测我在这里做错了什么?
答案 0 :(得分:1)
TabHost选项卡上显示的徽章视图可以成为Tab主机所属的活动的类成员。 Activity类可以有一个更新成员函数,该函数将Badge Views显示的文本作为输入,并使用函数输入更新这些BadgeViews显示的文本。 在Fragment端,片段可以通过getActivity获取父活动的句柄,并调用活动的update成员函数,同时传递要在Badge View上显示的新值。
将BadgeViews添加到活动
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);
}
更新活动中的BadgeViews的功能
public void UpdateBadgeView( String newString1, String newString2, String newString3 )
{
Badge1.setText(newString1);
Badge2.setText(newString2);
Badge3.setText(newString3);
}
从Fragment
更新BadgeViews的调用((MyActivityClass) getActivity()).UpdateBadgeView( text1, text2, text3 );