• Mein Widget braucht zur verarbeitung irgendwas um die Widget zu unterscheiden also WidgetId geholt und die will bei Button klick über Intent putExtra weiter das sie bei onReceive wieder hab.


    onUpdate:

    Java
    int id=appWidgetIds[0]; 
    Intent moveBack=new Intent(context,Widget.class); 
    moveBack.putExtra("widgetID",""+id); 
    moveBack.setAction(ACTION_WIDGET_BACK); 
    PendingIntent pendingIntentClickBack=PendingIntent.getBroadcast(context, 0, moveBack, 0); 
    remoteViews.setOnClickPendingIntent(R.id.moveBack, pendingIntentClickBack);



    onReceive

    Java
    if(intent.getAction().equals(ACTION_WIDGET_BACK)){ 
    String widgetId= intent.getStringExtra("widgetID"); 
    //... 
    }


    die onreceive-Bedinugn wird ausgeführt da gibt es kein Fehler allerdings ist die widgetId null. Woran kann das liegen bzw. gibts ne andere möglichkeit?

  • Vielleicht ging der Cast schief. Kannst du nicht einfach ein int Extra übergeben? Damit vermeidest du schon mal einen Null Pointer – es sei denn, appWidgetIds[0] ist null. ;)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • aso daran liegt nicht, hab nur kurz vorher geändert, weil der standardwert ja bei int mitgeliefert wurde...


    vorher war es int und wird wohl nachher auch wieder werden.


    und appWidgetId[0] ist nicht leer lasse das über Log ausgeben und das sollte eigentlich im hunderter bereich liegen-

  • Vor dem Aufruf des Intents hat id einen vernünftigen Wert. Das hast du geprüft.
    Nach dem Aufruf des Intents ist das übergebene Extra leer. Das hast du geprüft.


    Also wird das Extra nicht korrekt übergeben.
    Die einzige Unbekannte in dem ganzen System ist das PendingIntent Dingens, welches ich absolut nicht verstehe.
    Eventuell läuft da irgendwas schief.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • ja aber was?
    die "0"-Werte könnte man ändern aber laut doc:

    Java
    public static PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags)


    requestCode Private request code for the sender (currently not used).
    flags May be FLAG_ONE_SHOT, FLAG_NO_CREATE, FLAG_CANCEL_CURRENT, FLAG_UPDATE_CURRENT, or any of the flags as supported by Intent.fillIn() to control which unspecified parts of the intent that can be supplied when the actual send happens


    Halt also eigentlich auch nix damit zu tun *hm*

  • Keine Ahnung von den Broadcasts. Für mich klingt das so, als würde das Intent moveBack als Broadcast herhalten müssen, während das onReceive direkt auf den PendingIntent Zugriff hat.


    Insofern würde ich mir einmal die Klasse von intent in der onReceive ansehen.
    Eventuell landet dort ja der PendingIntent.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Hast du mal alle Extras des Intents ausgelesen?
    Nachher ist da nur ein blöder Tippfehler drin. ^^


    Also durch intent.getExtras().keySet() durchiterieren und mal schauen was da mit welchen Werten drin steht.

    Java
    Bundle extras = intent.getExtras();
    Log.d("Extras", "Known Extras in Intent "+intent.getClass().getCanonicalName());
    for(String key: extras.keySet())
    {
      Log.d("Extras", "<"+key+"> "+extras.get(key));
    }

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Nun hab ein Beispiel gefunden wo als Flag: PendingIntent.FLAG_UPDATE_CURRENT übergeben wurde und dann klappts mit der Übergabe zwar aber nun hab ein anderes Problem:
    wenn zwei Widget erzeuge und auf einem den Button benutzen wird auf jedem Widget das OnReceive gestartet

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!