Hello,

Well, at last here is my solution: I convert my object array to string
array, put it in a bundle,
put the bundle in the intent extras, and create the pending intent: The
string array contains
all the fields of all the objects I need to pass. Then I undo them when I
receive them in the
application I launch.

--------------------------------------------------------------------------------------------------------------------------

      Bundle b = new Bundle();
      b.putStringArray("alarmMessages",
AlarmMessage.toStringArray(alarmMessages));
      intent.putExtra("alarmMessages", b);
      pendingIntent = PendingIntent.getBroadcast(ctx, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
      alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),
pendingIntent);

---------------------------------------------------------------------------------------------------------------------------
Then inside my broadcast receiver:

public class AlarmReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {

    Log.d("AlarmReceiver", "received");

    Intent i = new Intent(context, AlarmExpiredActivity.class);
    i.putExtra("alarmMessages", intent.getBundleExtra("alarmMessages"));
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);

  }

}
-----------------------------------------------------------------------------------------------------------------------------

And then to reset the alarm inside my fired application:

    Bundle b = getIntent().getBundleExtra("alarmMessages");
    String[] alarmMessagesStr = b.getStringArray("alarmMessages");
    this.alarmMessages = AlarmMessage.fromStringArray(alarmMessagesStr);

and then display the messages.

-------------------------------------------------------------------------------------------------------------------------------

Thanks,

Regards,

Feedback welcome,

John Goche

On Tue, Sep 27, 2011 at 9:52 AM, John Goche <johngoch...@googlemail.com>wrote:

>
> Thanks TreKing for your approach,
>
> The only thing is I have to pass around an array of stuff, and the Intent
> interface only has:
>
> Bundle     getBundleExtra(String name)
> Intent     putExtra(String name, Bundle value)
> Intent     putExtras(Bundle extras)
> Intent     replaceExtras(Bundle extras)
>
> I have started implementing the approach given by TreKing...
> The problem I am having is I need to pass an array of objects (all of the
> same type).
> If I am going to pass this array in a bundle I need to generate a key for
> each element
> in the array while adding them to the bundle. Is this the way to go (or is
> using a DB better)?
>
> Thanks,
>
> John Goche
>
> On Sep 27, 4:00 am, TreKing <treking...@gmail.com> wrote:
>> >   On Mon, Sep 26, 2011 at 2:40 PM, John Goche <
>> johngoch...@googlemail.com>wrote:
>> >
>> >
>> > public interface Bundleable
>> > {
>> >  public Bundle toBundle();
>> >
>> >  public void fromBundle(Bundle b);
>> >
>> > }
>> >
>> > public class MyClass implements Bundleable
>> > {
>> >  public Bundle toBundle()
>> >  {
>> >   Bundle b = new Bundle();
>> >   // Fill b with data
>> >   return b;
>> >  }
>> >
>> >  public void from Bundle(Bundle b)
>> >  {
>> >   // set properties from data in b
>> >  }
>> >
>> > }
>> >
>> > // ...
>> >
>> > MyClass m = new MyClass();
>> > Intent i = new Intent();
>> > i.putBundleExtra("MyClass", m.toBundle());
>> >
>> > // ... Elsewhere
>> >
>> > Bundle b = intent.getBundleExtra("MyClass");
>> > MyClass m = new MyClass(b); // Constructor calls 
>> > fromBundle(b);<android-developers%2bunsubscr...@googlegroups.com>
>>  <http://groups.google.com/group/android-developers?hl=en>
>>
>>
>
>

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

Reply via email to