1

Ich habe ein Widget in Android, wann immer ich auf Widget TextView klicken ein Service get beginnt, aber zur gleichen Zeit möchte ich das Symbol, das auf der rechten Seite angezeigt wird, ändern.Symbol ändern, wenn Textansicht im Widget geklickt wird

ich ein Onclick über Widget TextView mit

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

einstellen können, aber ich weiß nicht, wo ich das Symbol, wenn die Textview Klicks

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

    } 
erhalten ändern

Wenn ein Icon selbst angeklickt wird, ändert es sich auch und ich habe seinen Code in onReceive

012 gesetzt diese
+0

Es gibt Leitfaden für [App Widgets] (http: // Entwickler Englisch: www.doc-o-matic.com/webhelp/SC_Additor.html (http://developer.android.com/reference/android/appwidget/AppWidgetProvider.html#onReceive (android.conten) t.Context,% 20android.content.Intent)) Methode. –

Antwort

3

versuchen:

In 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> 

In 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

Hallo Hunt, jedes Problem mit meiner Antwort Bez Dies ist ein funktionierendes Beispiel an meinem Ende .. –

+0

Wie wird das BuildUpdate aufgerufen werden? – Hunt

+0

siehe dieses ans: - [Widget wird geklickt] (http://stackoverflow.com/questions/9671596/how-doi-i-start-an-activity-when-my-widget-is-clicked/9671968#9671968) –