2 Stimmen

Was ist der richtige Weg, eine Variable zu speichern, damit sie ihren Wert behält, wenn sich die Aktivitäten ändern?

Ich werde verrückt, weil ich versuche herauszufinden, wie man eine Variable an einem Ort speichert, sodass sie den Wert behält, wenn ich zu einer anderen Aktivität wechsle und dann zurückkehre. Vor einer Weile habe ich das mit geteilten Präferenzen gemacht, aber das war keine gute Lösung, das war viel zu dauerhaft und einfach nicht der richtige Weg.

Wenn in Aktivität eins eine bestimmte Schaltfläche gedrückt wird, dann wird Aktivität zwei über ein Intent geöffnet und ein Wert auf eine Zeichenfolge in Aktivität zwei gesetzt. Beim Wechsel zu einer anderen Aktivität oder beim Drücken der Zurück-Schaltfläche und anschließendem Zurückkehren zu Aktivität zwei wird die Zeichenfolge auf ihren ursprünglichen Wert zurückgesetzt.

Ich habe folgendes versucht:

Geteilte Präferenzen (hat funktioniert, war aber nicht gut) Statische Variablen (scheint keinen Unterschied zu machen, vielleicht mache ich etwas falsch) Verwendung von den Methoden onSaveInstanceState und onRestoreInstanceState wie folgt:

 @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
     savedInstanceState.putString(destination, des);
        super.onSaveInstanceState(savedInstanceState);
    }

 @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        des = savedInstanceState.getString(destination);
    }

Ich bin an dem Punkt, an dem ich zugeben muss, dass ich keine Ahnung habe, wie das geht, und dass das Zusammensetzen von Code mehr Probleme verursacht als etwas anderes, aber bisher sind keine Mistgabeln am Horizont zu sehen.

Um einen Wert in einer Zeichenfolge zwischen Aktivitäten zu speichern, was empfehlen erfahrene Programmierer?

3voto

codeMagic Punkte 44289

Sie können es einfach als extra mit Intent übergeben

Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("key", value); // wobei key ist, wonach auch immer Sie es benennen möchten 
                              // und wird verwendet, um es in der nächsten 
                              // Aktivität abzurufen, und value ist der tatsächliche Wert Ihres Strings
startActivity(intent);

Dann holen Sie den Wert in Ihrer Zweiten Aktivität

Intent curIntent = getIntent();
String variableName = curIntent.getStringExtra("key");

Intents

1voto

Tim C Punkte 635

Eine weitere Möglichkeit besteht darin, Activity um eine neue Klasse zu erweitern, die beispielsweise SuperActivity genannt wird. Dann erweitern Sie in jedem Ihrer nachfolgenden Aktivitätsklassen die SuperActivity-Klasse. Platzieren Sie die Elemente, auf die global zugegriffen werden soll, in der SuperActivity-Klasse.

Bitte beachten Sie, dass dies die SuperActivity-Klasse mit jeder neuen Aktivität erstellen würde - daher müsste eine dynamische Variable initialisiert werden. Statische Variablen würden jedoch von Implementierung zu Implementierung beibehalten werden.

Zu beachten ist, dass ich dies nicht verwenden würde, um Daten über Intents weiterzugeben. Durch dies hat jede Aktivität jede Variable, die in der SuperActivity enthalten ist. Wenn die Variable also in allen (oder fast allen) Ihren Aktivitäten erforderlich ist, ist es besser, sie über Intents weiterzugeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X