1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Activity has leaked IntentReceiver

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Tom299, 27.03.2012.

  1. Tom299, 27.03.2012 #1
    Tom299

    Tom299 Threadstarter Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Hallo Leute,

    ich hab gerade ein Problem festgestellt, das scheinbar nur auf meinem Samsung Galaxy S2 auftritt, HTC Sensation, Motorola Defy und der Emulator bringen diese Fehlermeldung nicht:

    Activity OrderStreetsActivity has leaked IntentReceiver com.android.internal.view.menu.MenuDialogHelper$1@405aaca8 that was originally registered here. Are you missing a call to unregisterReceiver()?

    Und zwar setze ich im onPrepareOptionsMenu die Werte für meine Sub-Menue-Items:

    Code:
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
        	super.onCreateOptionsMenu(menu);
        	
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.order_streets_menu, menu);
    
            return true;
        }
        
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
        	super.onPrepareOptionsMenu(menu);
        	
    //    	Integer[] iValues = dbHelper2.readStatus(OrderStreetsActivity.this);
        	Integer[] iValues = { 5, 4, 3, 2, 1 };
    //    	String[] statusText = getResources().getStringArray(R.array.auftragsstatus);
        	String[] statusText = { "AA", "BB", "CC", "DD", "EE" };
        	
        	MenuItem subItem = menu.getItem(menu.size()-1);
            if (subItem.hasSubMenu()) {
            	SubMenu subMenu = subItem.getSubMenu();
            	for (int i=0; i<subMenu.size();i++) {
            		MenuItem item = subMenu.getItem(i);
            		if (item != null) {
            			item.setTitle(iValues[i] + " " + statusText[i]);
            		}
            	}
            }
    
            return true;
        }
    
    Zuerst dachte ich, es liegt evtl. am Datenbank-Aufruf, also hab ich das auskommentiert und Werte im Code gesetzt. Da es nichts gebracht hat, hatte ich das gleiche für den String-Array-Aufruf gemacht, also auskommentiert und Werte im Code gesetzt. Der Fehler tritt aber immer noch auf und ich weiß nicht, wo das Problem liegen soll. Ich rufe auch nirgends einen Receiver auf, wo ich mich registrieren würde.

    Hat jemand eine Idee, woran das liegen könnte?


    Gruß,
    Tom
     
  2. Boni2k, 27.03.2012 #2
    Boni2k

    Boni2k Android-Hilfe.de Mitglied

    Beiträge:
    46
    Erhaltene Danke:
    14
    Registriert seit:
    10.11.2009
    Testweise kannst du ja mal versuchen, das ganze im onCreateOptionsMenu abzuarbeiten statt im onPrepareOptionsMenu. Am Code innerhalb der Methoden kann's eigentlich nicht liegen.
     
  3. Tom299, 27.03.2012 #3
    Tom299

    Tom299 Threadstarter Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Ich habe jetzt den komplette Code im onPrepareOptionsMenu auskommentiert und im onMenuItemSelected steht nur noch break:

    Code:
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
       switch (item.getItemId()) {
    
       case R.id.menu_order_streets_status:
    	break;
    				
       default:
    	break;
       }
    
       return super.onMenuItemSelected(featureId, item);
    }
    
    Der Fehler kommt immer noch ...
     
  4. DieGoldeneMitte, 27.03.2012 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)

Diese Seite empfehlen