ett väldigt konstigt problem med intents

Diskussion i 'Frågor, support och diskussion' startad av mardox, 26 november 2010.

  1. mardox

    mardox Kid Droid Medlem

    Blev medlem:
    31 januari 2010
    Inlägg:
    73
    Mottagna gillanden:
    6

    MINA ENHETER

    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++;
    	}
    }
    
     
  2. softarn

    softarn Teen Droid Medlem

    Blev medlem:
    4 mars 2010
    Inlägg:
    361
    Mottagna gillanden:
    9

    MINA ENHETER

    Sitter på tåget och kan inte kolla igenom koden, men för kortare intervall, som 5sec, bör du använda Handler.

    Sent from my HTC Desire using Tapatalk
     
  3. mardox

    mardox Kid Droid Medlem

    Blev medlem:
    31 januari 2010
    Inlägg:
    73
    Mottagna gillanden:
    6

    MINA ENHETER

    jo jag vet men 5 sekunder är bara när jag testkör så jag inte måste vänta i hundra år för att se om nåt är fel ^^ borde kanske tydliggjort det :)