2010-01-27 4 views
0

J'essaie d'accéder à un SeekBar dans un AlertDialog. Je dois soit setOnSeekBarChangeListener(), soit accéder à SeekBar.getProgress() pour obtenir sa valeur. Où est-ce que je fais ça? C'est possible?Comment définir OnSeekBarChangedListener pour SeekBar utilisé dans AlertDialog via LayoutInflater

La boîte de dialogue est affichée à l'aide de showDialog (id) à partir de onOptionsItemSelected.

Le code suivant est utilisé dans onCreateDialog pour créer le composant AlertDialog avec un contenu personnalisé qui inclut un SeekBar.

case CALIBRATE_DIALOG_ID: { 
      // This example shows how to add a custom layout to an AlertDialog 
      LayoutInflater factory = LayoutInflater.from(this); 
      final View calibrateView = factory.inflate(R.layout.dlg_calibrate, null); 
      return new AlertDialog.Builder(this) 
       .setIcon(R.drawable.alert_dialog_icon) 
       .setTitle("Calibrate") 
       .setView(calibrateView) 
       .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 

         //mSeekBar1 = (SeekBar) findViewById(R.id.SeekBar01); 
         //Toast.makeText(ctx, mSeekBar1.getProgress(), Toast.LENGTH_SHORT); 

        } 
       }) 
       .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 

         /* User clicked cancel so do some stuff */ 
        } 
       }) 
       .create(); 
     } 

Je ne peux pas le faire dans l'activité principale onCreate; le SeekBar n'a pas encore été créé. Je pensais que je serais en mesure d'obtenir un handle sur la valeur SeekBar.getProgress() dans le gestionnaire onClick du bouton Ok, mais ne pouvait pas.

Toutes les suggestions seraient super!

grâce

patrick

Répondre

4

Vous pouvez obtenir votre SeekBar en appelant findViewById() sur votre calibrateView, probablement.

+0

Eh bien c'était trop évident ... merci encore! – bugzy

Questions connexes