Nach dem Klick auf einen Button im 'Main' Layout soll sich ein Dialog öffnen, in dem Texteingaben möglich sind und auch angeklickt werden kann, wo der Drive gelandet ist. Dis habe ich mit Togglebuttons realisieren wollen.
Problematisch war, dass immer nur ein Button 'An' sein sollte. Die Lösung hat mich ganz schön Zeit gekostet:). Schließlich fand ich heraus, dass ich für jeden der Buttons ein OnCheckedChangeListener brauche.
Hier der Code des Alertdialogaufrufes zur Eingabe der Abschlagslänge -Richtung und der Einlochdistanz:
public void pDrvPutClick(View v){
final Button b = (Button) v;
LayoutInflater inflater = getLayoutInflater();
View dstView = inflater.inflate(R.layout.dlg_drvput, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context) ;
builder.setView(dstView);
final EditText edit_ddst = (EditText) dstView.findViewById(R.id.drvDst);
final EditText edit_pdst = (EditText) dstView.findViewById(R.id.putDst);
final ToggleButton rb1 = (ToggleButton) dstView.findViewById(R.id.rb_hit);
final ToggleButton rb2 = (ToggleButton) dstView.findViewById(R.id.rb_left);
final ToggleButton rb3 = (ToggleButton) dstView.findViewById(R.id.rb_right);
final ToggleButton rb4 = (ToggleButton) dstView.findViewById(R.id.rb_miss);
//Klickhandling OnCheckedChangeListener fuer jeden Button
rb1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
rb2.setChecked(false);
rb3.setChecked(false);
rb4.setChecked(false);
}
}
});
rb2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
rb1.setChecked(false);
rb3.setChecked(false);
rb4.setChecked(false);
}
}
});
rb3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
rb1.setChecked(false);
rb2.setChecked(false);
rb4.setChecked(false);
}
}
});
rb4.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
rb1.setChecked(false);
rb3.setChecked(false);
rb2.setChecked(false);
}
}
});
builder.setPositiveButton("OK", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
String ddst;
ddst = edit_ddst.getText().toString();
if (ddst=="") {
ddst="Drive";
}else {
if (rb1.isChecked()){
ddst="H"+ddst;
}
if (rb2.isChecked()){
ddst="L"+ddst;
}
if (rb3.isChecked()){
ddst="R"+ddst;
}
if (rb4.isChecked()){
ddst="M"+ddst;
}
}
String pdst;
pdst = edit_pdst.getText().toString();
if (pdst=="") {
pdst="PutDst";
}
b.setText(ddst+"\n"+pdst);
// do something
// lbl_platz = (TextView) findViewById(R.id.lbl_courseName);
// lbl_platz.setText(value);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
// do nothing
}
});
builder.show();
}