2011-03-30 3 views
0

내 응용 프로그램의 메인 화면에는 해당 달의 항목 수를 표시하는 TextView가 있습니다. 이 숫자는 SQLiteDB에서 항목을 추가/삭제할 때만 변경됩니다.위젯의 TextView 반영

내가 원하는 것은 항상 내 위젯에 그 번호를 반영합니다. 사용자가 항목을 추가/삭제할 때만 업데이트하고 싶다면이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

답변

1

사용자가 항목을 추가하거나 제거 할 때 위젯의 onUpdate 메서드를 직접 호출하거나 위젯 업데이트를 트리거하는 새 브로드 캐스트를 보낼 수 있습니다. 그런 다음 onUpdate에서 DB에서 카운트를 읽고 위젯 UI를 채 웁니다.

편집

이 코드는 내가의 onUpdate를 호출하는 방법에 대한 명확하지 않다 Activity

private void updateAllWidgets(){ 
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getApplicationContext()); 
    int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(this, MyWidget.class)); 
    if (appWidgetIds.length > 0) { 
     new MyWidget().onUpdate(this, appWidgetManager, appWidgetIds); 
    } 
} 
+0

에서 위젯을 업데이트 할 수 있습니다. 나의 주요 활동에서, 나는 해냈다 : private AppWidget mAppWidget; mAppWidget.onUpdate (context, appWidgetManager, appWidgetIds, mValue); 번호를 전달하기 위해 mValue를 추가했지만 컨텍스트, appWidgetManager 및 appWidgetIds를 설정할 항목이 확실하지 않습니다. – Roger

+0

@Roger가 코드 예제를 추가했습니다. –

0

TextView을 업데이트 한 다음이 메서드를 항목을 추가/삭제하는 코드에서 호출해야합니다.

TextView에 db 내용이 변경 될 때 항상 변경되도록하는 명확한 방법은 없습니다. 코드에서 변경이 발생할 수있는 지점을 찾아 적절히 처리하는 것이 가장 좋습니다.

TextView이 포함 된 활동의 onResume 메소드에서 update 메소드를 호출하여 다른 활동에서 발생하는 db 변경 사항을 처리 할 수 ​​있습니다.