Hej , jag vet att jag har vart rätt aktiv med frågor på senaste veckan men det är bara för jag får så otroligt bra hjälp med alla problem jag stöter på, och det tackar jag för!
det problemet jag har är ett jag tycker är väldigt mystiskt. tänkte först förklara problemet sen får ni se koden längst ner.
jag har en alarmManager som aktiverar DictNoty klassen efter 5 sec.
till DictNoty skickar jag med en sträng (notydisc) och en Long (mDateId).
jag printar mDateId i ett toast medelande så jag vet vilket värde mDateId har.
vidare i DictNoty klassen så plockar jag ut strängen (notydisc) och min Long (mDateId) ur intenten , dessa skickar jag vidare med i pendingintent för den notification som skapas. men det som är problemet är att den mDateId som jag la in med alarmManager intenten inte är densamma som den jag hämtade ut i DictNoty klassen :S detta ser jag med min andra toast i DictNoty klassen.
såhär kan det se ut tex.
toast1 =33 toast2=27
ibland har de samma värde ibland inte, verkar helt random kort sagt. men inget är ju egentligen random i kod så vad behövs fixar tror ni?
Kod:
PendingIntent contentIntent = null;
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
String notydisc = null;
Toast toast = Toast.makeText(this, String.format("%d", mDateId), Toast.LENGTH_SHORT);
toast.show();//debugging
Cursor c = dateDbHelper.fetchDate(mDateId);
startManagingCursor(c);
notydisc = c.getString(c.getColumnIndexOrThrow(diktationdatesDbAdapter.KEY_DATE));
Intent intent2 = new Intent(this, DictNoty.class);
intent2.putExtra(diktationdatesDbAdapter.KEY_DATEID,mDateId);
intent2.putExtra(diktationdatesDbAdapter.KEY_DATE,notydisc);
contentIntent = PendingIntent.getBroadcast(getApplicationContext(), j, intent2, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (5 * 1000), contentIntent);
j++;
Kod:
public class DictNoty extends BroadcastReceiver {
public static PendingIntent contentIntent = null;
public static NotificationManager mNotificationManager;
private Long mDateId;
private Notification noty;
private String notytext = null;
private String notydisc = null;
private int i = 30;
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
mDateId = extras != null ? extras.getLong(diktationdatesDbAdapter.KEY_DATEID)
: null;
notydisc = extras != null ? extras.getString(diktationdatesDbAdapter.KEY_DATE)
: null;
Intent N = new Intent(context, PlayDict.class);
N.putExtra(diktationdatesDbAdapter.KEY_DATEID,mDateId);
String ns = Context.NOTIFICATION_SERVICE;
mNotificationManager = (NotificationManager) context.getSystemService(ns);
notytext = "Dictation Reminder";
noty = new Notification(R.drawable.statusicon, notytext,System.currentTimeMillis());
Toast toast = Toast.makeText(context, String.format("%d", mDateId), Toast.LENGTH_SHORT);
toast.show();//debugging
N.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
contentIntent = PendingIntent.getActivity(context, i, N, Intent.FLAG_ACTIVITY_NEW_TASK);
noty.setLatestEventInfo(context, notytext, notydisc, contentIntent);
mNotificationManager.notify(mDateId.intValue(),noty);
i++;
}
}