Right, that wouldn't have an effect because your inflated layout is a
completely different copy from the one inflated by the home screen.

Also, I noticed that your using "putExtra" in your PendingIntents.  Be
sure to use the FLAG_CANCEL_CURRENT flag when calling getActivity() to
make sure your extras are updated correctly.  And be aware that you
can only have one set of extras for any given PendingIntent
action+data+category+component pair.

If you're trying to change the background of a button, you could use
this slightly-hacky approach: set the button background to a leveled
drawable, and then use setDrawableParameters() to change the level and
show the desired background.

You'd probably want to keep the number of layers to a minimum to keep it speedy.

j


On Wed, Apr 29, 2009 at 3:40 AM, [email protected]
<[email protected]> wrote:
>
> Thanks for your reply Jeff,
>
> Turns out what I really needed to do here was learn how Intent based
> programming on Android works and how to actually implement it! What I
> was missing here was actually declaring the activity in the Android
> XML (I assumed that activities only had to be declared if they were
> actually going to display something).
>
> Still though I would be really nice if I could get direct access to
> Button Widgets via LayerInflator so that I can directly manipulate the
> background of the button, unfortunately the following seems to have no
> effect:
>
>                LayoutInflater inflater = (LayoutInflater) context
>                                
> .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
>                View view = inflater.inflate(R.layout.widget_layout, null);
>
>                Button button = (Button) view.findViewById(R.id.ToggleButton);
>                button.setBackgroundResource(R.drawable.airplaneoff);
>
>                RemoteViews views = new RemoteViews(context.getPackageName(),
>                                R.layout.widget_layout);
>
>                Intent defineIntent = new Intent(context, 
> ToggleActivity.class);
>                defineIntent.putExtra("toggle", toggle);
>                PendingIntent pendingIntent = 
> PendingIntent.getActivity(context, 0,
>                                defineIntent, Intent.FLAG_ACTIVITY_NEW_TASK);
>
>                views.setOnClickPendingIntent(R.id.ToggleButton, 
> pendingIntent);
>
>                // Tell the widget manager
>                appWidgetManager.updateAppWidget(appWidgetId, views);
>
> No big deal tho since I can always use an ImageView and call
> RemoteViews.setImageViewBitmap(id)
>
> On Apr 29, 4:25 am, Jeff Sharkey <[email protected]> wrote:
>> Hmm, not sure exactly why it isn't working.  Because you can't know
>> the state of the remote AppWidgetHostView holding your widget, you
>> should package up all operations each time you push an update.  You
>> said in logcat it looks like it's trying to start the activity, could
>> you paste the couple of lines surrounding that?
>>
>> Also, if you don't have an <intent-filter> inside the Activity
>> definition in your manifest, you might need to add the
>> android:exported="true" flag.
>>
>> j
>>
>> On Tue, Apr 28, 2009 at 5:52 PM, [email protected]
>>
>>
>>
>> <[email protected]> wrote:
>>
>> > As a side note I also tried using LayoutInflator and attaching an
>> > onClickListener to the imageview manually, but that failed to
>> > recognise any events. Im guessing here that changes made via a
>> > layoutinflator will not be picked up by remote views which later use
>> > that layout?
>>
>> > On Apr 29, 1:19 am, "[email protected]"
>> > <[email protected]> wrote:
>> >> I have the following code in a static function in my application
>> >> widget:
>>
>> >>                 Intent defineIntent = new Intent(context,
>> >> ToggleIntentActivity.class);
>> >>                 PendingIntent pendingIntent = PendingIntent
>> >>                                 .getActivity(context, 0, defineIntent, 0);
>>
>> >>                 views.setOnClickPendingIntent(R.id.icon, pendingIntent);
>>
>> >>                 // Tell the widget manager
>> >>                 appWidgetManager.updateAppWidget(appWidgetId, views);
>>
>> >> From the examples it looked as though this was the way to trigger
>> >> custom activity's based on user clicks on your widgets. However even
>> >> though Logcat says Starting Activity: Intent {......} my activities on
>> >> create function never gets called!
>>
>> >> Note my Activity is as follows:
>>
>> >> public class ToggleIntentActivity extends Activity {
>> >>         @Override
>> >>         protected void onCreate(Bundle savedInstanceState) {
>> >>                 super.onCreate(savedInstanceState);
>> >>                 Log.e(QuickerCutWidgetManager.TAG, "On create");
>> >>         }
>>
>> >> }
>>
>> >> Any ideas?
>>
>> --
>> Jeff Sharkey
>> [email protected]
> >
>



-- 
Jeff Sharkey
[email protected]

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to