2014-11-17 4 views
1

각 탭에서 조각을 호스트하는 활동에 Tabhost가 있습니다. 조각에는 일부 요소가 채워지는 목록보기가 있습니다.TabHost 조각 내에서 BadgeView 업데이트

모든 탭에는 조각의 목록에있는 항목 수가 표시되는 배지가 있습니다. 라이브러리 에서 배지를 사용하고 있습니다. 이제 목록의 항목이 작업 (예 : 삭제 또는 추가)에 따라 변경 될 수 있습니다.

목록의 삽입 또는 삭제시마다 각 탭의 배지를 업데이트하고 싶습니다. 다음 코드를 사용하여 목록에 업데이트가있을 때마다 새로운 배지를 추가하려고했습니다. -

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

그러나 이것은 작동하지 않았습니다. 어떤 추측이 내가 여기서 뭘 잘못하고있는 걸까요?

답변

1

TabHost 탭에 표시되는 배지 뷰는 Tab Host가 속한 Activity의 클래스 멤버가 될 수 있습니다. 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); 
+0

@ takesavy @ shabeer90 allBadge.setText에서 BadgeViews를 업데이트하는 전화를 BadgeViews을 업데이트하는 기능 (BadgeViews 추가

String.valueOf (allWords.size())); 그것은 나에게 nullpointerexception을주고, 어떤 생각을 가지고 왜 ?? –

+0

allWords는 제 경우와 마찬가지로 listView입니다 (따라서 getCount()를 호출합니다.) allBadge가 BadgeView의 새 인스턴스로 초기화 되었습니까? 일부 코드를 공유 할 수 있다면 귀하를 도울 수 있습니다. – takesavy