2017-02-01 7 views
0

Ich habe eine Tätigkeit, genannt AddItem, die ein paar Felder enthält, die der Benutzer füllt und ich versuche sie nun auf eine andere Tätigkeit zu übergeben. Ich war in der Lage, die ersten beiden Felder zu erhalten, indem dies zu tun:Warum stürzt meine Aktivität ab, wenn ich versuche, eine Nummer zu bekommen?

String messageText = ((EditText) findViewById(R.id.inputName)).getText().toString(); 
String discriptionText = ((EditText) findViewById(R.id.description)).getText().toString(); 

Der obige Code Spaß gearbeitet, aber dann habe ich versucht, einen anderen Wert zu erhalten, die ich dann wie so zu einem Doppel Stimmen:

double Latitude = Double.parseDouble(((EditText) findViewById(R.id.Latitude)).getText().toString()); 

Es ist irgendwie lang und kompliziert, aber ich mache im Prinzip das Gleiche mit der Ausnahme der Analyse der Zeichenfolge und der Umwandlung in einen doppelten Wert. Ich habe festgestellt, dass dies der Problemcode ist, denn wenn ich es auszeichne, läuft der Rest der App gut.

Hier ist meine Aktivität:

public class AddItem extends AppCompatActivity { 

    EditText inputedTask, inputedDescription, inputedLatitude; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_item); 
    inputedTask = (EditText) findViewById(R.id.inputName); 
    inputedDescription = (EditText) findViewById(R.id.description); 
    inputedLatitude = (EditText) findViewById(R.id.Latitude); 
    } 

    public void onSaveItemButton(View view) { 
    String messageText = ((EditText) findViewById(R.id.inputName)).getText().toString(); 
    String discriptionText = ((EditText) findViewById(R.id.description)).getText().toString(); 
    double Latitude = Double.parseDouble(((EditText) findViewById(R.id.Latitude)).getText().toString()); 

    if (messageText.equals("")); 
    else { 
     Intent intent = new Intent(); 
     intent.putExtra(Intent_Constant.INTENT_MESSAGE_FIELD, messageText); 
     setResult(Intent_Constant.INTENT_RESULT_CODE, intent); 
     finish(); 
    } 
    } 
} 
+1

Sind Sie sicher, dass Ihr EditText enthält ein richtig formatiertes Double? – AnixPasBesoin

+0

Vielleicht sagen Sie uns den Fehler, den Sie erhalten? –

+0

@Selvin Es tut mir leid, was bedeutet das? –

Antwort

4

Sie benötigen eine öffentliche Methode für die onClick zu machen, von der documentation:

Innerhalb der Aktivität, die dieses Layout-Hosts, die folgende Methode behandelt das Click-Ereignis:

Die Methode, die Sie im Attribut android:onClick deklarieren, muss einehaben 10 Unterschrift genau wie oben gezeigt. Insbesondere muss die Methode:

  • öffentlich
  • leer kommen
  • eine Darstellung als einzigen Parameter definieren (dies wird der Ansicht sein geklickten)

So Sie brauchen, um die Methode zu ändern public:

public void onSaveItemButton(View view) { 
    ... 
} 

UPDATE:
Da das Fehlerprotokoll sagt:

bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698) Verursacht durch: java .lang.NumberFormatException: Ungültige double: "" bei java.lang.StringToReal.invalidReal (StringToReal.java:63) bei java.lang.StringToReal.parseDouble (StringToReal.java:267) bei java.lang.Double .Par seDouble (Double.java:301) bei cs4720.cs.virginia.edu.duysalahandroidminiproject02.AddItem.onSaveItemButton (AddItem.java:33)

Sie müssen sich für leere Zeichenfolge in dem folgenden Code fangen:

double Latitude = Double.parseDouble(((EditText) findViewById(R.id.Latitude)).getText().toString()); 

so, überprüfen Sie es zuerst:

String val = ((EditText) findViewById(R.id.Latitude)).getText().toString(); 
if(!val.equals("") { 
    double Latitude = Double.parseDouble(val); 
} 
+0

Ich habe das gemacht, aber es gibt immer noch den gleichen Fehler. –

+0

Was ist der neue Fehler ?, bitte posten Sie es hier. –

+0

Ich habe die aktualisierte Fehlermeldung gepostet. Es sieht zwar genauso aus wie das vorherige. –

-1

Sie rufen onSaveItemButton Methode aus einer Sicht, die nicht initialisiert wird. Sie müssen btnChangeDate im onCreate aus der Aktivität initialisieren.

prüfen this answer

+0

Wo siehst du 'onSaveItemButton' in dieser Frage? – AnixPasBesoin

+0

Also sagst du, dass ich das Problem nur beheben kann, indem ich etwas wie "Latitude = (EditText) findViewById (R.id.Latitude)" in meiner 'onCreate' Methode mache? Wenn das erforderlich ist, warum musste ich dann nicht für die anderen beiden Felder dasselbe tun? Nur neugierig. –

+0

@AnixPasBesoin Im XML-Teil. Es ist die Methode, die aufgerufen wird, wenn Sie den Knopf drücken. –

Verwandte Themen