如何通过LayoutInflater为AlertDialog中使用的SeekBar设置OnSeekBarChangedListener

时间:2010-01-27 02:30:05

标签: android android-widget

我正在尝试访问AlertDialog中的SeekBar。 我需要setOnSeekBarChangeListener(),或者访问SeekBar.getProgress()来获取它的值。我在哪里这样做?有可能吗?

使用onOptionsItemSelected中的showDialog(id)显示对话框。

在onCreateDialog中使用以下代码来创建包含SeekBar的自定义内容的AlertDialog。

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();
        }

我无法在主要活动onCreate上做到这一点;尚未创建SeekBar。我以为我能够在Ok Button的onClick处理程序中获取SeekBar.getProgress()值的句柄但是不能。

任何建议都会很棒!

感谢

帕特里克

1 个答案:

答案 0 :(得分:4)

您可以通过SeekBar致电findViewById()来获取calibrateView,大概是。