2017-03-05 107 views
1

我想在自定义AlertDialog中使用SeekBar,但是当我单击按钮时它崩溃。 自定义AlertDialog只有一个ID为“seekProgress”的ID和一个ID为“seekBar1”的SeekBar。 如果我删除“seekBar.setOnSeekBarChangeListener ...”它不会崩溃,但当我移动它时当然没有任何反应。在自定义AlertDialog中插入SeekBar(Android)

主要活动有一个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 Listener正常工作?

编辑:当我调试我得到这个错误: 产生的原因:显示java.lang.NullPointerException:试图调用虚拟方法无效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); 
+0

顺便说一句,我可以让它在主要活动的工作,但它不会在AlertDialog工作... – Laur89

+0

如果你有logcat的,请发表 –

回答

1

使用此代码:

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); 
0

您是否在应用程序崩溃时检查了logcat?尝试使seekbar和seekProgress变量全局。并在onCreate方法中初始化它们。

+0

仍然没有按” t工作... – Laur89

+0

什么是logcat中显示的错误,当应用程序崩溃? – JSmith