2013-02-02 28 views
0

我嘗試插入一個處理程序來更新widget_textview背景每隔X秒,但我不知道是什麼和在哪裏放置更新的TextView背景定期

 int i; 
     if (i==1) { 
      TextView myTxt = (TextView) findViewById(R.id.widget_textview); 
      myTxt.setBackgroundResource(R.drawable.pic1); 
      i++; 
        }else if(i==2) { 
        TextView myTxt = (TextView) findViewById(R.id.widget_textview); 
        myTxt.setBackgroundResource(R.drawable.pic2); 
        i++; 
        }else if(i==3) { 
        TextView myTxt = (TextView) findViewById(R.id.widget_textview); 
       myTxt.setBackgroundResource(R.drawable.pic1); 
       i=2; 
        }else { 
       i++; 
      } 

我不能把這個在任何地方,無論我把這個代碼我得到在TextView中

這個錯誤是我的代碼

import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import android.app.PendingIntent; 
import android.appwidget.AppWidgetManager; 
import android.appwidget.AppWidgetProvider; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Handler; 
import android.widget.RemoteViews; 
import android.widget.TextView; 

public class Widget extends AppWidgetProvider { 
    private Handler handler = new Handler(); 
    RemoteViews views; 
    AppWidgetManager appWidgetManager; 
    ComponentName currentWidget; 
    Context context; 
    DateFormat format = new SimpleDateFormat("HH:mm"); 
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
      int[] appWidgetIds) { 
     this.context = context; 
     this.appWidgetManager = appWidgetManager; 
     views = new RemoteViews(context.getPackageName(), R.layout.widget); 
     currentWidget = new ComponentName(context, Widget.class); 
     handler.removeCallbacks(UpdateWidget); 
     handler.postDelayed(UpdateWidget, 100); 

    } 

    final Runnable UpdateWidget = new Runnable() { 
     public void run() { 

      Intent informationIntent = new Intent(context, MainActivity.class); 
      PendingIntent infoPendingIntent = PendingIntent.getActivity(
        context, 0, informationIntent, 0); 
      views.setOnClickPendingIntent(R.id.Widget, infoPendingIntent); 


      views.setTextViewText(R.id.widget_textview, 
        "" + format.format(new Date())); 
      appWidgetManager.updateAppWidget(currentWidget, views); 
      handler.postDelayed(UpdateWidget, 1000); 



     } 
    }; 

    @Override 
    public void onDisabled(Context context) { 
     super.onDisabled(context); 
     handler.removeCallbacks(UpdateWidget); 
    } 
} 

回答

-1

把這個在您的處理程序類實現onHandleMessage()方法method.This被覆蓋。

public class MyHandler extends Hadnler(

      onHandlerMessage(Message msg){ 

     //your code you want to put 

} 
} 
+0

抱歉,但我不明白,介意給我解釋一下它的一些細節?對不起,我仍然是新的 – user2033624

+0

處理程序是一種特殊的線程用於更新UI.When創建Myhandller的對象,如 Myhandler處理程序=新的MyHandler(); 你可以通過 發送消息來更新線程handler.sendEmptyMessage(); 這將調用您的onHandleMessage()方法,您可以在其中放置背景更新代碼。這是您的第一個有問題的代碼片段。 我希望您能理解處理程序的機制。如果您仍然懷疑可以搜索處理程序的工作方式。並且您可以輕鬆確定將代碼放在哪裏。 –

+0

嘿,我做到了,非常感謝您的幫助! – user2033624