getText ist...lustig

  • 8 Antworten
  • Neuester Beitrag
Diskutiere getText ist...lustig im Android App Entwicklung im Bereich Betriebssysteme & Apps.
L

Liamissimo

Neues Mitglied
Hey,

man merkt, ich bin der "Neuling". Diese App um den Text in eine Zahl umzuwandeln und dann als Toast auszugeben scheitert an einem Crash, auch mit try und catch:
Code:
package com.vibdroid;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    int durat;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  
        final EditText input = (EditText)findViewById(durat);
    	ImageButton andvib = (ImageButton)findViewById(R.id.vib_but);
        andvib.setOnClickListener(new View.OnClickListener() {			
			public void onClick(View v) {
				durat = Integer.getInteger(input.getText().toString());
				Toast newt = Toast.makeText(getApplicationContext(), input.getText().toString(), Toast.LENGTH_SHORT);
				newt.show();
			}
		});
    }
}
Also noch klarer gehts doch nicht?
 
P

Peter123

Fortgeschrittenes Mitglied
Bist du dir sicher, dass
Code:
 final EditText input = (EditText)findViewById(durat);
richtig ist?
Der Integer durat wurde ja vorher noch kein Wert zugewiesen...

Ansonsten poste doch mal, was LogCat so ausgibt.
 
L

Liamissimo

Neues Mitglied
Oh man, es tut mir so leid. Mir ist das so peinlich. Geändert in
final EditText input = (EditText)findViewById(R.id.txt_input);
da die ID des TextEdit so lautet.
Crasht trotzdem...Also beim Drücken.
 
P

Peter123

Fortgeschrittenes Mitglied
Ich weiß nicht warum du
Code:
durat = Integer.getInteger(input.getText().toString());
benutzt.
Ich persönlich würde
Code:
durat = Integer.valueOf(input.getText().toString());
nehmen.

Hast du LogCat? Könntest du dann eben posten worin der Fehler besteht?
 
K

ko5tik

Stammgast
Da unsere angestellte Telepathen gerade mal frei haben, wäre es hilfreich,
wenn du den Stacktrace von dem Crash posten würdest (meistens reich es
einfach aufmerksam zu lesen)
 
P

Peter123

Fortgeschrittenes Mitglied
Habe gerade nochmal recherchiert. Also folgender Code produziert höchstwahrscheinlich eine NullPointerException:
Code:
durat = Integer.getInteger(input.getText().toString());
Integer (Java Platform SE 6)
 
K

ko5tik

Stammgast
Also, vorgehensweise:
- logcat lesen und verstehen
- passende Stelle im Code finden
- nachdenken
- getInteger ist statisch - also unschuldig in NPE
- input == null ?
- input.getText() == 0 ?
 
L

Liamissimo

Neues Mitglied
Also, Lösung ist valueOf nehmen anstatt getInteger. Wieso weiß ich nicht, beides bewirkt genau dasselbe laut Documentation. Ab jetzt werde ich immer Logcat posten, tut mir leid, bin noch nicht so drin im Debuggen, Lite-C kam ohne aus ;)
 
K

krackmoe

Neues Mitglied
Integer.parseInt(String) würd auch gehen...