| |||||||
Das Thema "benötige non final - putExtra will final!" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 16.10.2010
Beiträge: 461
Abgegebene Danke: 25
Erhielt 110 Danke für 62 Beiträge
| ![]() In der Datenbank stehen Labels, die auf Buttons kommen und Zahlen, die beim Intent als putExtra übergeben werden. PHP-Code: In der if() kann man gut sehen, wie ich dann zum nächsten ROW hüpfe und intnr eine neue Zahl bekommt. Das Problem: putExtra() möchte ein final! Allerdings ist final schelcht, wenn ich den wärt ändern möchte ![]() Hat dazu jemand eine Idee?! MfG Ice
__________________ Galaxy Nexus: Android 4.0.4 (ICS) - Stock HP Touchpad: Android 4.0.4 (ICS) - CM9 Alpha 2.0 NIGHLTY (22.04.2012) |
| | |
| | #2 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
wenn du vorher einfach ne neue final var deklarierst? final Integer tmp = new Integer(intr); oder sowas in die richtung
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| Folgender Benutzer bedankt sich bei swordi für diesen Beitrag: | IceClaw (17.11.2011) |
| | #3 (permalink) | |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
| Zitat:
![]() Deine anonyme innere Klasse braucht final weil sie sonst nicht weiß wie sie an den Wert kommen soll. Entweder das oder du definierst sie als Klassenvariable. Eine Methode kann nicht verlangen eine final Variable zu bekommen. Das existiert nicht in Java.
__________________ Follow/Add/Circle/Whatever me on Google+ Solitaire HD, ein Solitaire optimiert für Honeycomb. | |
| | |
| | #4 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 16.10.2010
Beiträge: 461
Abgegebene Danke: 25
Erhielt 110 Danke für 62 Beiträge
|
Hallo, wenn ich eine Klassenvariable int intnr; mache, dann wird immer das letzte was ich hinzugefügt habe als intnr zu JEDEM Button hinzugefügt! oO Warum? MfG Ice
__________________ Galaxy Nexus: Android 4.0.4 (ICS) - Stock HP Touchpad: Android 4.0.4 (ICS) - CM9 Alpha 2.0 NIGHLTY (22.04.2012) |
| | |
| | #5 (permalink) |
| Android Experte Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
|
Wenn du eine Instanzvariable (Klassenvariablen sind die mit static -- das nur zur Info) hast, wird der Wert genommen, denn diese Variable zum Zeitpunkt hat, wenn der Callback gerufen wird. Wenn du in der Schleife (beim Erzeugen der Callbacks) immer wieder einen Wert an eine Variable zuweist, hat diese beim Aufruf der Callbacks natürlich den zuletzt zugewiesenen Wert. In deinem Fall wäre wohl ein Array fällig. -- und etwas Java Nachhilfe, wie the_alien schon sagt
__________________ Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon. Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten. Tipp: Zum "Danke" sagen gibt es einen Button. ![]() |
| | |
| | #6 (permalink) |
| Fortgeschrittenes Mitglied Modell: Galaxy Nexus Registriert seit: 16.10.2010
Beiträge: 461
Abgegebene Danke: 25
Erhielt 110 Danke für 62 Beiträge
|
HI, also danke erstmal für die Antworten! Allerdings verstehe ich echt.. naja eigentlich kaum was oO Ich habe Grundlagen in Java - etwas mehr vielleicht - deswegen frage ich ja auch... Also nochmal zum mitschreiben: alien sagt, ich soll eine Klassenvariable machen: PHP-Code: DieGoldeneMitte will, dass ich ein array mache, sähe also so aus??: PHP-Code: Dann bekomme ich aber beim catch() einen error (Selbstgeschreibenes Toast )Also wie bitte soll ich das jetzt anstellen? MfG Ice
__________________ Galaxy Nexus: Android 4.0.4 (ICS) - Stock HP Touchpad: Android 4.0.4 (ICS) - CM9 Alpha 2.0 NIGHLTY (22.04.2012) |
| | |
| | #7 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
was wäre, wenn du aus der inner class deines listeners eine "anständige" klasse baust der gibst du dann den int paramter im construktor mit und setzt es dann in der onClick methode.
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
| | #8 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
|
laß mal static weg und schreib private hin, dann sollte das klappen, oder google mal nach Klassenvariablen und Instanzvariablen in java.
|
| | |
| | #9 (permalink) | |
| Android Guru Modell: T-Mobile G1, Nexus One, Samsung Galaxy Tab 10.1, Samsung Galaxy Nexus Registriert seit: 04.05.2009
Beiträge: 1.599
Abgegebene Danke: 128
Erhielt 210 Danke für 193 Beiträge
| Zitat:
Lies dir den entsprechenden Part erst mal durch Java ist auch eine Insel – 6.12 Innere Klassen
__________________ Follow/Add/Circle/Whatever me on Google+ Solitaire HD, ein Solitaire optimiert für Honeycomb. | |
| | |
| | #10 (permalink) | |
| Android Guru Modell: Samsung Galaxy S (I9000) Registriert seit: 21.12.2009
Beiträge: 2.572
Abgegebene Danke: 76
Erhielt 506 Danke für 295 Beiträge
| Zitat:
Dem Compiler/VM kann das eigentlich banane sein ob final oder nicht, es dient scheinbar lediglich dem Zweck, dass dem Programmierer bewusst ist, womit die innere Klasse arbeitet. Beweis: Code: public void fubar(long value){
Button button = null;
final long a = System.currentTimeMillis(); //blöde Konstantenoptimierung
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
fubar(a);
}
});
} Die Methode fubar() Code: # virtual methods
.method public fubar(J)V
.locals 4
.parameter "value"
.prologue
.line 8
const/4 v2, 0x0
.line 9
.local v2, button:Landroid/widget/Button;
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
.line 10
.local v0, a:J
new-instance v3, Lde/tests/test2$1;
invoke-direct {v3, p0, v0, v1}, Lde/tests/test2$1;-><init>(Lde/tests/test2;J)V
invoke-virtual {v2, v3}, Landroid/widget/Button;->setOnClickListener(Landroid/view/View$OnClickListener;)V
.line 15
return-void
.end method Code: .class Lde/tests/test2$1;
# interfaces
.implements Landroid/view/View$OnClickListener;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lde/tests/test2;->fubar(J)V
.end annotation
# instance fields
.field final synthetic this$0:Lde/tests/test2;
.field private final synthetic val$a:J
# direct methods
.method constructor <init>(Lde/tests/test2;J)V
.locals 0
.parameter
.parameter
.prologue
.line 1
iput-object p1, p0, Lde/tests/test2$1;->this$0:Lde/tests/test2;
iput-wide p2, p0, Lde/tests/test2$1;->val$a:J
.line 10
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
return-void
.end method
# virtual methods
.method public onClick(Landroid/view/View;)V
.locals 3
.parameter "v"
.prologue
.line 12
iget-object v0, p0, Lde/tests/test2$1;->this$0:Lde/tests/test2;
iget-wide v1, p0, Lde/tests/test2$1;->val$a:J
invoke-virtual {v0, v1, v2}, Lde/tests/test2;->fubar(J)V
.line 13
return-void
.end method
__________________ Meine Apps: GTalk Widget free Filehosting mit direkt download links & ohne werbung | |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [ROM]Honeysense v.1.4 FINAL | Der_Androide | Custom-Roms für HTC Desire | 22 | 22.09.2011 07:36 |
| CyanogenMod 7 FINAL | itsme1 | Root / Hacking / Modding für Nexus One | 97 | 21.05.2011 08:42 |
| StreakDroid 1.9.0 final | UKSheep | Root / Hacking / Modding für Dell Streak | 23 | 24.03.2011 09:33 |
| Final Freeway for Android OS | apfelnase | Android Spiele | 1 | 20.12.2010 20:57 |
| CM6 Final Release | Pander | Root / Hacking / Modding für HTC Wildfire | 14 | 17.12.2010 17:14 |