在自定义 AlertDialog 中插入 SeekBar (Android)

Insert SeekBar in custom AlertDialog (Android)

我正在尝试在自定义 AlertDialog 中使用 SeekBar,但是当我单击该按钮时它崩溃了。 自定义AlertDialog 只有一个id 为"seekProgress" 的TextView 和一个id 为"seekBar1" 的SeekBar。 如果我删除 "seekBar.setOnSeekBarChangeListener..." 它不会崩溃,但当然当我移动它时什么也不会发生。

主 activity 有一个带有 onClick="myMethod" 的按钮,我在其中创建 AlertDialog。这是此方法的代码:

public void myMethod(View view){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    LayoutInflater inflater = this.getLayoutInflater();
    builder.setView(inflater.inflate(R.layout.dialog_exchange_money_farmers, null));
    SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar1);
    seekProgress = (TextView) findViewById(R.id.seekProgress);

    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        int progressValue;
        TextView seekProgress = (TextView) findViewById(R.id.seekProgress);

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            progressValue = progress;
            seekProgress.setText("Covered: " + progress + " / " + seekBar.getMax());
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            seekProgress.setText("Covered: " + progressValue + " / " + seekBar.getMax());
        }
    });

    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

如何让 SeekBar 监听器工作?

编辑:调试时出现此错误: 由以下原因引起:java.lang.NullPointerException:尝试在空对象引用

上调用虚拟方法'void android.widget.SeekBar.setOnSeekBarChangeListener(android.widget.SeekBar$OnSeekBarChangeListener)'

我有SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar1);为什么它说它是空的?

解决方案: 我不得不告诉他这些项目的布局。

     View testView = inflater.inflate(R.layout.dialog_exchange_money_farmers, null);
        builder.setView(testView);
        seekBar = (SeekBar) testView.findViewById(R.id.seekBar1);
        seekProgress = (TextView) testView.findViewById(R.id.seekProgress);

当应用程序崩溃时,您检查过logcat吗?尝试将 seekbar 和 seekProgress 变量设置为全局变量。并在 onCreate 方法中初始化它们。

使用此代码:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
    LayoutInflater inflater = this.getLayoutInflater();
    View view=inflater.inflate(R.layout.dialog_exchange_money_farmers,null);
    builder.setView(view);
    SeekBar seekBar = (SeekBar) view.findViewById(R.id.seekBar1);
    seekProgress = (TextView) view.findViewById(R.id.seekProgress);