T
tom_tom_2401
Neues Mitglied
- 2
Hallo
Ich verwende mehrere NumberPicker in einem alertDialog zum Einlesen von Koordinaten. Diese NumberPicker werden zuerst in einem xml-file definiert und dann angezeigt. Ich hab jedoch das Problem, dass keine Werte angezigt werden, bzw der aktuelle Wert nur dann sichtbar wird, wenn man auf diesen klickt, die Tastatur sich öffnet und denselben markiert.
Drücke ich auf den OK Button, werden die eingestellten Werte jedoch korrekt zurück gegeben und verarbeitet (es sind auch die Werte, die ich erwarte)
Mittels folgender Methode öffne ich den alertDialog:
Screenshot zur Verdeutlichung:
*klick für größere Ansicht*
Nicht durch die zusammenhängenden Linien verwirren lassen, das sind NumberPicker, die eng zusammen geschoben sind. Es sind insgesamt 8 Stück davon.
Was ist mein Fehler? Die min/max Werte werden korrekt gesetzt (kontrolle durch np1.getMinValue() etc.
Danke Thomas
Ich verwende mehrere NumberPicker in einem alertDialog zum Einlesen von Koordinaten. Diese NumberPicker werden zuerst in einem xml-file definiert und dann angezeigt. Ich hab jedoch das Problem, dass keine Werte angezigt werden, bzw der aktuelle Wert nur dann sichtbar wird, wenn man auf diesen klickt, die Tastatur sich öffnet und denselben markiert.
Drücke ich auf den OK Button, werden die eingestellten Werte jedoch korrekt zurück gegeben und verarbeitet (es sind auch die Werte, die ich erwarte)
Mittels folgender Methode öffne ich den alertDialog:
Code:
public void showDialog()
{
final Context context=getApplicationContext();
final AlertDialog.Builder d = new AlertDialog.Builder(this);
final NumberPicker np1, np2, np3, np4, np5, np6, np7, np8;
final String abc[] = new String[] { "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z" };
final String zero_to_99[] = new String[100];
//init string array
for(int i=0; i<=99; i++)
{
zero_to_99[i] = Integer.toString(i);
if(zero_to_99[i].length() == 1)
zero_to_99[i] = "0"+Integer.toString(i);
}
LayoutInflater layoutInflater = (LayoutInflater)getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View view=layoutInflater.inflate(R.layout.dialog_pick_coord,null);
String txt_title = context.getResources().getString(R.string.txt_head_search_coord);
d.setTitle(txt_title);
//Spalte
np1 = (NumberPicker) view.findViewById(R.id.p1);
np1.setMaxValue(60); // max value 60
np1.setMinValue(1); // min value 1
np1.setWrapSelectorWheel(false);
//Zeile
np2 = (NumberPicker) view.findViewById(R.id.p2);
np2.setMaxValue(25); // max value Z
np2.setMinValue(0); // min value A
np2.setDisplayedValues( abc );
np2.setWrapSelectorWheel(false);
//100km Quadrat 1
//np3
//100km Quadrat 2
//np4
//Easting xx*
//np5
//Easting **x
//np6
//Northing xx*
//np7
//Northing **x
//np8
//Code für value Erzeugung aus aktueller Position
np1.setValue(utmCoordElements[0]);
np2.setValue(utmCoordElements[1]);
np3.setValue(utmCoordElements[2]);
np4.setValue(utmCoordElements[3]);
np5.setValue(utmCoordElements[4]);
np6.setValue(utmCoordElements[5]);
np7.setValue(utmCoordElements[6]);
np8.setValue(utmCoordElements[7]);
Log.w("NumberPicker","np1 min: "+np1.getMinValue());
d.setPositiveButton(context.getResources().getString(R.string.Accept), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Code für pos. btn
}
});
d.setNegativeButton(context.getResources().getString(R.string.Cancel), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
//Code für neg. btn
}
});
d.setView(view);
d.show();
}

*klick für größere Ansicht*
Nicht durch die zusammenhängenden Linien verwirren lassen, das sind NumberPicker, die eng zusammen geschoben sind. Es sind insgesamt 8 Stück davon.
Was ist mein Fehler? Die min/max Werte werden korrekt gesetzt (kontrolle durch np1.getMinValue() etc.
Danke Thomas
Zuletzt bearbeitet: