# Log in IDE unzureichend



## BuckRogers (7. Nov 2013)

Hallo Java-Fans,

habe vor kurzem angefangen Android zu programmieren. Läuft alles gut soweit. Hab n Buch, Plattformen sind drin, kann auf mein phone deployen etc. Aber was mich stört ist der unzureichende Log. Ich werd nicht schlau aus den Meldungen. Hauptsächlich erscheint die Meldung dass die Acvitity crasht. Muss ich die Anweisungen in try/catch wrappen oder gibt es besondere Einstellungen für den Log? 

Danke für die Hinweise

Beste Grüße

Euer Buck!


----------



## dzim (7. Nov 2013)

du kannst mit android.Log.<Level-Methode> deine eigenen Logs erzeugen - egal ob Verbose, Debug, Warning oder Error (wobei ich manchmal auch den besten Log überhaupt nutze: What a Terrible Failure - kurz WTF! BTW: Kein Scherz! Gibt es wirklich.).

Will heißen: Nein, es gibt ausser dem Log-Level und dem Filter keine weiteren Einstellungsmöglichkeiten an der Log-Konsole, aber du kannst sie um eigene und mehr Aussagekräftigere Logs erweitern.

Was genau hast du denn für einen Fehler? Stürzt die Anwendung dann auch ab? Poste doch mal den Stacktrace...


----------



## BuckRogers (7. Nov 2013)

Danke für deine Antwort,

ja die Anwendung stürzt ab. Den Fehler konnte ich auch schon ausmachen und habe die entsprechende Codezeile einfach auskommentiert.

Ursache war das erzeugen eines RatingbarObjekts in onCreate().
Oder besser noch das Initialisieren dieses mit einem Wert aus dem zuvor gespeicherten Bundle.
Ich dachte mir ich müsse die Werte neu setzen da ja die Activity destroyed wird sobald man die ansicht rotiert, und somit alle Inputs flüchten gehen.

Wenn ich die Ansicht auf meinem Phone rotiert habe ist die App abgekachelt und es kam nur eine Fehlermeldung ala: Activity crashed! Wirklich sehr nützlich :noe:

Die entsprechende Zeile konnte ich per Debugging ausfindig machen. Bin grad noch auf Arbeit, aber ich kann mal den Code aus der History posten wenn ich zu hause bin. Evemtuell erkennt man ja auf Anhieb den Fehler 

Cheers


----------



## BuckRogers (8. Nov 2013)

```
public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */

    protected String BAR_VALUE;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        BAR_VALUE = "0.5";
        RatingBar mBar = (RatingBar) findViewById(R.id.ratingBar);
        if (savedInstanceState != null){
            BAR_VALUE = (String) savedInstanceState.get("ratingBarValue");
        }

        mBar.setRating(Float.parseFloat(BAR_VALUE));


        View.OnClickListener mBarListener = new View.OnClickListener() {
            public void onClick(View view) {
                RatingBar bar = (RatingBar) view;

                BAR_VALUE = String.valueOf(bar.getRating());
                Log.i("mBarListener", "RatingBarValue: " + String.valueOf(BAR_VALUE));
            }
        };

        mBar.setOnClickListener(mBarListener);

    }

    @Override
    protected void onPause() {
        super.onPause();

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Bundle outState = new Bundle();
        outState.putString("ratingBarValue", String.valueOf(BAR_VALUE));
        onSaveInstanceState(outState);

    }
}
```

Irgendwo in Zeile 21 oder 24 hat die App sich aufgehangen beim rotieren der Ansicht....


----------



## dzim (10. Nov 2013)

Ich würde vermuten, dass hier das Parsen fehlschlug weil ein leerer String drin steckte, aber ich würde den Fehler eher an einer anderen Stelle vermuten:
In onDestroy konstruierst du dein Bundle und rufst onSaveInstanceState auf - ich glaube, dass du hier den falschen Ansatz verwendendest. Überschreibe lieber diese Methode, wie du es mit der onDestroy gemacht hast und setze dort den Parameter. Ich glaube, das die Platform später unabhängig von deinem onDestroy diese Methode so oder so aufruft und dann ein ganzlich anderes Bundle-Objekt reinsteckt. Deine Daten sind dadurch dann "futsch" und dein Float#parseFloat muss dann folglich fehlschlagen...
Kannst du meine Theorie mal überprüfen?

Daniel


----------



## BuckRogers (18. Nov 2013)

Hi,

ich bin mit der Anwendung nun schon ein wenig weiter gekommen. Das Problem war tatsächlich eine NullpointerException. 

Mittlerweile klappt das mit dem RatingBar einwandfrei und habe auch eine kleine SQLite DB mit eingebaut. Daten können eingegeben werden und werden dabei sogar geprüft. Auch eine ListView ist dabei uvm. Muss sagen dass es reichlich spaß bereitet Android zu programmieren. 

Aber mir ist auch aufgefallen dass man in onCreate() gar kein Bundle setzen brauch. Es ist überflüssig, da die App samt der Daten im Hauptspeicher beendet wird.

cheers


----------

