Variable lässt sich nicht überschreiben

  • Antworten:3
  • Bentwortet
Dom Santiago
  • Forum-Beiträge: 30

09.12.2012, 15:57:02 via Website

Hallo zusammen,

ich habe ein Problem seit dem neuesten Update auf 4.1.1 auf ein Galaxy S3.
Eigentlich nichts wildes aber ein wenig merkwürdig.

Ich deklariere eine Variable in meiner Klasse und initialisiere Sie in der onCreate() Methode, soweit so gut.
Diese Varible kann ich jederzeit im Programmcode auslesen. Da ich Sie aber gerne Variable initialisieren möchte habe ich Ihr bei der Ausführung einens Click-Events einen neuen Wert zugewiesen.

Variable:
1protected String path, path2;

Initialisierung in der Klasse:
1path = Environment.getExternalStorageDirectory()
2 + "/images/make_machine_example.jpg";

Versuch zu überschreiben in der Click-Methode:
1public class ButtonClickHandler implements View.OnClickListener {
2 public void onClick(View view) {
3 path = Environment.getExternalStorageDirectory()
4 + "/images/make_machine_example_test.jpg";
5 startCameraActivity();
6 }
7 }

Leider wird die Variable nicht überschrieben, beim debuggen bekomme ich immer den Wert aus der Klasse und nicht den überschriebenen.
Bevor ich das Update gefahren habe ging alles bestens, hat jemand eine Tipp?

Antworten
Dom Santiago
  • Forum-Beiträge: 30

09.12.2012, 18:27:20 via Website

Ich bin ein wenig weitergekommen. Die Variable wird überschrieben und der Wert ist gespeichert bis folgendes Intent abgearbeitet wurde:
1File file = new File(path);
2 // Creates a Uri from a file
3 Uri outputFileUri = Uri.fromFile(file);
4Intent intent = new Intent(
5 android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
6 // Add the captured image in the path
7 intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
8 // Start result method - Method handles the output
9 // of the camera activity
10 startActivityForResult(intent, 0);
11 }
Noch ist der Überschriebene Pfad vorhanden.
Aber nach dem Intent (ein Bild mit der Kamera machen) werden alle Werte wieder auf die Standartwerte zurückgesetzt, so als ob sich die Klasse von vorn lädt.

Gibt es eine Möglichkeit diese Werte irgendwie zu speichern?

Antworten
Max Müller
  • Forum-Beiträge: 4

09.12.2012, 22:08:59 via Website

Wenn deine Activity zwischendurch verlassen wird, dann ist es tatsächlich möglich, dass sie neu erstellt wird.

Nutzt du onSaveInstanceState(), um den Wert von path in einem Bundle abzuspeichern und in onCreate() bei übergabe eines savedInstanceState wiederherzustellen?

Antworten
Dom Santiago
  • Forum-Beiträge: 30

10.12.2012, 11:52:15 via Website

Super,
dass war der Tipp den ich brauchte. Vor dem Update war dies nie ein Problem aber danach schon.
Läuft jetzt alles bestens. Hier der Code welchen ich eingefügt habe.
1@Override
2 protected void onSaveInstanceState(Bundle outState) {
3 outState.putBoolean(EMobilityCam.PHOTO_TAKEN, taken);
4 outState.putString("path", path);
5 }

1if(savedInstanceState != null){
2 path = savedInstanceState.getString("path");
3 }

Danke Max Müller

— geändert am 10.12.2012, 11:52:40

Antworten