2013-03-31 3 views
1

Ive получил TextView обновить дату и время в виджете и попытались использовать Timer обновлять его каждый второй, но оно не работает:Widget TextView не обновляется при использовании таймера

public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { 
    final int N = appWidgetIds.length; 

    for (int i = 0; i < N; i++) { 
     int appWidgetId = appWidgetIds[i]; 

     Intent clockIntent = new Intent(context, DeskClock.class); 
     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, clockIntent, 0); 

     final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.digitalclock); 
     views.setOnClickPendingIntent(R.id.rl, pendingIntent); 

     Timer timer = new Timer(); 
     timer.schedule(new TimerTask() { 

      @Override 
      public void run() { 
       java.util.Date noteTS = Calendar.getInstance().getTime(); 
       String time = "kk:mm"; 
       String date = "dd MMMMM yyyy"; 

       views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS)); 
       views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS)); 
      } 
     }, 0, 1000);// Update text every second 

     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 

Im идя неправильно где-нибудь, если кто-нибудь знает, дайте мне знать и дайте мне правильный способ сделать это. Заранее спасибо

ответ

1

попытки обновить приложение виджет в бегах()

 @Override 
     public void run() { 
      java.util.Date noteTS = Calendar.getInstance().getTime(); 
      String time = "kk:mm"; 
      String date = "dd MMMMM yyyy"; 

      views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS)); 
      views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS)); 
      appWidgetManager.updateAppWidget(appWidgetId, views); 
     } 
    }, 0, 1000);// Update text every second 

попробовать это так это работает для меня, я думаю, что я был один и тот же вопрос в другом приложении я использовал, вместо таймер и TimerTask используйте:

Handler mHandler; 
Runnable continuousRunnable = new Runnable() { 
     public void run() { 
      java.util.Date noteTS = Calendar.getInstance().getTime(); 
      String time = "kk:mm"; 
      String date = "dd MMMMM yyyy"; 

      views.setTextViewText(R.id.tvTime, DateFormat.format(time, noteTS)); 
      views.setTextViewText(R.id.tvDate, DateFormat.format(date, noteTS)); 
      appWidgetManager.updateAppWidget(appWidgetId, views); 

      mHandler.postDelayed(this, 1000); 
     } 
    }; 
    mHandler.post(continuousRunnable); 
+0

Он обновляется один раз, но остается в то же время после этого .. – Timmo

+0

я обновил, может быть, это будет работать – JRowan

+0

Im угадывание 'Handler mHandler,' выходит за пределы 'OnUpdate' метод .. Пробовал он и он даже не обновляется один раз – Timmo

Смежные вопросы