1

TextView的,當我有創造的Android窗口小部件,每當我在Widget TextView一個服務開始獲得點擊,但在同一時間,我想改變其右側所示的圖標。更改圖標被點擊控件

我可以設置使用

remoteViews.setOnClickPendingIntent(R.id.widgetTxt,pendingIntent); 

,但我不知道在哪裏可以改變圖標時TextView的獲得點擊

圖像0​​enter image description here

@Override 
     public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) { 

         // Here i am trying to set a onclick over TextView 
    Intent intent = new Intent(context,MyService.class); 
      PendingIntent pendingIntent = PendingIntent.getService(context,0 , 
        intent, 0); 

      remoteViews.setOnClickPendingIntent(R.id.MyWidgetTxt,pendingIntent); 

    } 

的onclick在Widget TextView當圖標本身被點擊時,它也會發生變化,並且我已將其代碼設置爲onReceive

+0

有指南[應用窗口小部件(HTTP://顯影劑.android.com/guide/topics/appwidgets/index.html)和[onReceive()](http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html#onReceive(android.conten t.Context,%20android.content.Intent))方法。 – 2012-03-24 10:56:31

回答

3

嘗試:

在的manifest.xml

<receiver android:name="TestwidgetProvider" 
      android:label="@string/widget_title" android:exported="false" android:icon="@drawable/test"> 
      <intent-filter> 
       <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
       <action android:name="com.imranandroid.demo.ACTION_ON_ImG_CLICK"/> 
       <action android:name="android.appwidget.action.APPWIDGET_DELETED"/> 
      </intent-filter> 
      <meta-data android:name="android.appwidget.provider" 
       android:resource="@xml/widget_info" /> 
     </receiver> 

AppWidgetProvider.java

public class TestwidgetProvider extends AppWidgetProvider { 
     public static final String TAG_IMAGE_CLICK = "com.imranandroid.demo.ACTION_ON_ImG_CLICK"; 
     public static RemoteViews rview; 
public static int ii=0; 
     @Override 
     public void onUpdate(Context paramContext, AppWidgetManager appWidgetManager, 
       int[] appWidgetIds){ 
      //REMOVE YOUR CODE FROM HERE 
      updateWidgetState(paramContext, "");  
     } 
     @Override 
     public void onReceive(Context paramContext, Intent paramIntent) 
      { 
      String str = paramIntent.getAction(); 
      if (paramIntent.getAction().equals(TAG_IMAGE_CLICK)) { 
       updateWidgetState(paramContext, str); 
      } 
      else 
      { 
       super.onReceive(paramContext, paramIntent); 
      } 
      } 
     static void updateWidgetState(Context paramContext, String paramString) 
      { 
      RemoteViews localRemoteViews = buildUpdate(paramContext, paramString); //CALL HERE 
      ComponentName localComponentName = new ComponentName(paramContext, TestwidgetProvider.class); 
      AppWidgetManager.getInstance(paramContext).updateAppWidget(localComponentName, localRemoteViews); 
      } 
    private static RemoteViews buildUpdate(Context paramContext, String paramString) 
     { 
     rview = new RemoteViews(paramContext.getPackageName(), R.layout.widget_layoutmain); 
     Intent active = new Intent(paramContext, TestwidgetProvider.class); //YOUR WIDGET NAME 
     active.setAction(TAG_IMAGE_CLICK); 
     PendingIntent actionPendingIntent = PendingIntent.getBroadcast(paramContext, 0, active, 0); 
     rview.setOnClickPendingIntent(R.id.MyWidgetTxt, actionPendingIntent); 
     if (paramString.equals(TAG_IMAGE_CLICK)) { 
     if(ii==0) 
      { 
      rview.setImageViewResource(R.id.ImageView01a, R.drawable.off); 
        ii=1; 
      } 
      else 
      { 
      rview.setImageViewResource(R.id.ImageView01a, R.drawable.on); 
        ii=0; 
      } 
      } 
     return rview; 
     } 
    } 
+0

嗨狩獵,任何問題與我的答案bez這是我的工作示例結束.. – 2012-03-24 11:19:37

+0

如何調用buildUpdate? – Hunt 2012-03-24 21:15:12

+0

看到此ANS: - [插件被點擊(http://stackoverflow.com/questions/9671596/how-do-i-start-an-activity-when-my-widget-is-clicked/9671968#9671968) – 2012-03-24 21:30:01