Das ist also ein anderes Problem, das schon millionenfach angesprochen wurde, aber ich mache immer noch etwas falsch. EditText.getText() gibt eine leere Zeichenfolge zurück.EditText.getText() gibt einen leeren String zurück
Ich mache das in einem kleinen benutzerdefinierten Dialog, den ich gemacht habe. Ich erstelle es mit dem AlertDialog Builder, der das Problem verursachen könnte? Ich weiß es wirklich nicht.
Einige Dinge, die ich habe versucht,/Hinweise auf das, was ich weiß, über das Thema:
Ich bin für Text in der OK-Taste des Klick-Listener Überprüfung, so versuche ich, nicht um einen Wert zu erhalten bevor es einen gab, was ein häufiger Fehler war, den ich sah.
Ich habe IDs für die EditText-Objekte in meinem XML festgelegt und der Debugger scheint zu zeigen, dass ich sie richtig referenziere.
Ich habe versucht, die EditText-Objekte außerhalb der onCreateDialog-Methode zu definieren, und das hat die Dinge nicht geändert (obwohl ich neugierig bin, was besser ist).
Mit EditText.setText() before getText() wird es ermöglichen, das in setText() verwendete Argument zurückgeben, aber es scheint nicht zu einem Wert vom Benutzer abgerufen werden.
Hier ist meine benutzerdefinierte Dialog Fragment:
public class GPSLocationDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
final View view = inflater.inflate(R.layout.gps_dialog, null);
final EditText latitudeText = (EditText) view.findViewById(R.id.latitude);
final EditText longitudeText = (EditText) view.findViewById(R.id.longitude);
// Define the dialog
builder.setView(inflater.inflate(R.layout.gps_dialog, null))
.setMessage("Manually input a GPS address")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Log.d("myTag", "Text: " + latitudeText.getText()); // This prints ""
// These throw errors since they're trying to parse "" as a double
double latitude = Double.parseDouble(latitudeText.getText().toString());
double longitude = Double.parseDouble(longitudeText.getText().toString());
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
// Create the AlertDialog object and return it
return builder.create();
}
}
Hier ist, wie ich den Dialog aus meiner Tätigkeit bin Aufruf:
GPSLocationDialogFragment gpsDialog = new GPSLocationDialogFragment();
gpsDialog.show(getFragmentManager(), "GPSDialog");
Und hier ist mein Layout .xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/longitude"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:hint="@string/longitude"
android:inputType="numberSigned|numberDecimal" />
<EditText
android:id="@+id/latitude"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:hint="@string/latitude"
android:inputType="numberSigned|numberDecimal" />
</LinearLayout>
Wenn mehr Kontext notwendig ist I kann es teilen, ich habe versucht, nur den relevanten Code zu vereinfachen.
Danke, das hat funktioniert und war eine sehr klare Erklärung für das Problem und was der fehlerhafte Code tat! – bobrocks95