2016-05-28 5 views
0

シークバーのレイアウトと、ダイアログ内で使用しているテキストビューがあります。 シークバーからテキストビューを更新しようとすると何も起こりません。seekbarダイアログのカスタムレイアウトを更新しない

私はonProgressChangedの変更を行っています。 ここmilage_main.classからの私のコードです:

public class milage_spinner extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar); 
seekBar.setProgress(10); 
seekBar.setMax(10); 

final TextView sbv = (TextView) findViewById(R.id.driveTime); 
final EditText drive_time = (EditText)findViewById(R.id.runTime); 

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){ 
@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
sbv.setText(String.valueOf(progress)); 
drive_time.setText(progress); 
} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 
} 

@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 
} 
}); 
} 
} 

そして、ここに私のレイアウトを取得している私のMainActiviy.classでダイアログビルダーがあるmilage_seekbar

private Dialog createMilage(){ 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
LayoutInflater inflater = this.getLayoutInflater(); 
LinearLayout linearLayout = (LinearLayout)inflater.inflate(R.layout.milage_spinner,null); 
builder.setView(linearLayout) 
.setTitle("Ktd") 
.setNegativeButton("Ok", new DialogInterface.OnClickListener() { 
@Override 
public void onClick(DialogInterface dialog, int i) { 
dialog.dismiss(); 
} 
}) 
; 
return builder.create(); 
} 

そして、レイアウトmilage_seekbarのXMLは次のようになります:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:weightSum="1"> 

<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:textAppearance="?android:attr/textAppearanceLarge" 
android:text="Large Text" 
android:id="@+id/driveTime" 
android:layout_gravity="center_horizontal" /> 
<SeekBar 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/seekBar" 
android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

onProgressChangedダイアログ内を私の主役にできますか?

+0

は、あなたはあなたのコードをデバッグし、** onProgressChanged **メソッドが呼び出されたかどうかを確認しましたか? –

+0

デバッグを実行し、デバッグが呼び出されていませんでした。 – mogren3000

+0

@alexandermogren check答え私は私の答えを編集.... –

答えて

1

milage_spinnerのXMLコードは

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:padding="2dp" 
    android:layout_gravity="center" > 

    <TextView 
     android:id="@+id/set_size_help_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Please select snowflake size" 

     android:textSize="25dp" /> 

    <SeekBar 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/size_seekbar" 
     android:layout_width="250dp" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="10dp" /> 

</LinearLayout> 

JavaコードでAlertDialogするためのダイアログに変更し、OnCreate関数を呼び出します。

private AlertDialog createMilage() { 
     LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View layout = inflater.inflate(R.layout.milage_spinner, (ViewGroup) findViewById(R.id.layout)); 
     AlertDialog.Builder builder = new AlertDialog.Builder(this) 
       .setView(layout); 
     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       dialog.dismiss(); 
      } 
     }); 
     AlertDialog alertDialog = builder.create(); 

     alertDialog.show(); 
     SeekBar sb = (SeekBar) layout.findViewById(R.id.size_seekbar); 
     final TextView set_size_help_text = (TextView) layout.findViewById(R.id.set_size_help_text); 
     sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
       set_size_help_text.setText("" + progress); 
      } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) { 

      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 

      } 
     }); 
     return alertDialog; 
    } 

enter image description here

+0

まだ仕事をしないでください。私は、私のダイアログが使用するレイアウトを持っており、layout.xmlには独自のクラスとその内部にコードを実行しています。私は別のやり方をしなければならないでしょうか? – mogren3000

+0

@alexandermogren plzあなたの質問を編集し、完全なコードを投稿するとコード内の問題を説明しています... –

+0

私は自分のコードを更新し、うまくいけば問題のより明確な見解を示しました。 – mogren3000

関連する問題