I pass a custom object from the service to onHandleIntent () via the LocalBroadcastManager.
Intent i = new Intent(ACTION); intent.putExtra(EXTRA_CARD_OBJECT, cardObject); LocalBroadcastManager.getInstance(this).sendBroadcast(i);
In the fragment, the receiver catches the intent, but for some reason it is null there.
private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { CardObject cardObject = intent.getParcelableExtra(EXTRA_CARD_OBJECT); // cardObject - null mAdapter.addCard(cardObject); } }; @Override public void onResume() { super.onResume(); IntentFilter filter = new IntentFilter(ACTION); LocalBroadcastManager.getInstance(getContext()).registerReceiver(mReceiver, filter); } @Override public void onPause() { super.onPause(); LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mReceiver); }
Custom class code:
public class CardObject implements Parcelable { private String mCelsius; private String mCFahrenheit; private String mSuggestion; private String mCityName; private String mBreezoMeterAqi; private Bitmap mCityPicture; private String mBreezoColor; public CardObject() { } public void setBreezoColor(String mBreezoColor) { this.mBreezoColor = mBreezoColor; } public void setCelsius(String mCelsius) { this.mCelsius = mCelsius; } public void setCFahrenheit(String mCFahrenheit) { this.mCFahrenheit = mCFahrenheit; } public void setSuggestion(String mSuggestion) { this.mSuggestion = mSuggestion; } public void setCityName(String mCityName) { this.mCityName = mCityName; } public void setBreezoMeterAqi(String mBreezoMeterAqi) { this.mBreezoMeterAqi = mBreezoMeterAqi; } public void setCityPicture(Bitmap mCityPicture) { this.mCityPicture = mCityPicture; } public String getBreezoColor() { return mBreezoColor; } public String getCFahrenheit() { return mCFahrenheit; } public String getSuggestion() { return mSuggestion; } public String getCityName() { return mCityName; } public String getBreezoMeterAqi() { return mBreezoMeterAqi; } public Bitmap getCityPicture() { return mCityPicture; } public String getCelsius(){ return mCelsius; } private CardObject(Parcel in) { mCelsius = in.readString(); mCFahrenheit = in.readString(); mSuggestion = in.readString(); mCityName = in.readString(); mBreezoMeterAqi = in.readString(); mCityPicture = in.readParcelable(Bitmap.class.getClassLoader()); } public static final Creator<CardObject> CREATOR = new Creator<CardObject>() { @Override public CardObject createFromParcel(Parcel in) { return new CardObject(in); } @Override public CardObject[] newArray(int size) { return new CardObject[size]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mCelsius); dest.writeString(mCFahrenheit); dest.writeString(mSuggestion); dest.writeString(mCityName); dest.writeString(mBreezoMeterAqi); dest.writeParcelable(mCityPicture, flags); }
}