2017-03-05 4 views
1

カスタムAlertDialogでSeekBarを使用しようとしていますが、ボタンをクリックするとクラッシュします。 カスタムAlertDialogには、idが "seekProgress"のTextViewとidが "seekBar1"のSeekBarのみがあります。 "seekBar.setOnSeekBarChangeListener ..."を削除するとクラッシュしませんが、移動すると何も起こりません。カスタムAlertDialog(Android)にSeekBarを挿入します。

メインアクティビティには、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を機能させるにはどうすればよいですか?

EDIT: によって引き起こさ:java.lang.NullPointerExceptionが:私はこのエラーを取得するデバッグする場合、仮想メソッド呼び出ししようと「無効android.widget.SeekBar.setOnSeekBarChangeListener(android.widget.SeekBar $ OnSeekBarChangeListener)」を上nullオブジェクトリファレンス

私は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

は、私はそれが主な活動で動作させることができますが、それはあなたがlogcatを得た場合 – Laur89

+0

は、「doesnのまだ –

答えて

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

を投稿してください... AlertDialogでは動作しません。仕事が... – Laur89

+0

アプリがクラッシュしたときに、logcatに表示されるエラーは何ですか? – JSmith

関連する問題