2017-03-05 75 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