package org.commcare.utils; import android.content.Context; import android.os.Handler; import android.os.Message; import android.widget.Toast; import org.commcare.views.notifications.NotificationMessage; import org.javarosa.core.services.locale.Localization; import java.lang.ref.WeakReference; /** * Message handler that pops-up notifications to the user via toast. */ public class PopupHandler extends Handler { /** * Reference to the context used to show pop-ups (the parent class). * Reference is weak to avoid memory leaks. */ private final WeakReference<Context> context; /** * @param activity Is the context used to pop-up the toast message. */ public PopupHandler(Context activity) { context = new WeakReference<>(activity); } /** * Pops up the message to the user by way of toast * * @param m Has a 'message' parcel storing pop-up message text */ @Override public void handleMessage(Message m) { NotificationMessage message = m.getData().getParcelable("message"); Context activity = context.get(); if (activity != null && message != null) { Toast.makeText(activity, Localization.get("notification.for.details.wrapper", new String[]{message.getTitle()}), Toast.LENGTH_LONG).show(); } } }