从 seekBar 的 progressChanged 获取 editText 值
Get editText value from seekBar's progressChanged
请帮帮我!
我有 3 个搜索栏和 3 个编辑文本。
我只需要基于搜索栏进度更改的每个编辑文本的值。
这是我的代码:
public class Main extends Activity {
int nil,nil1,nil2,nil3;
@Override
protected void onCreate(Bundle savedInstanceState) {
//sb1 for seekBar1 ... etc
//ed1 for editText1 ... etc
sbValue(sb1, ed1);
nil1 = nil; // I think I failed to get value in here
sbValue(sb2, ed2);
nil2 = nil;
sbValue(sb3, ed3);
nil3 = nil;
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("","nil1 = "+nil1+"nil2 = "+nil2+"nil3 = "+nil3);
}
});
}
它是 sbValue 方法
public int sbValue(final SeekBar sb, final EditText ed) {
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
...
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
int val = sb.getProgress();
ed.setText(String.valueOf(val));
nil = val; //here is okay, the value is right.
}
});
//but when I tried to get Log from here, It always give me 0.
return 0;
}
}
您正在尝试获取进度状态并且想对此做些什么。
您正在 onProgressChanged 方法中检查进度状态。所以你知道你只能在 onProgressChanged 内部获得进度那么你怎么能期望方法外部的进度状态或值。
想实现什么就在方法里面实现
我明白了。我将 nil 的变量更改为数组:
int[] nil = new int[3];
然后添加了描述edittext的参数。
sbValue(sb1, ed1, 1);
sbValue(sb2, ed2, 2);
sbValue(sb3, ed3, 3);
方法是这样的:
public int sbValue(final SeekBar sb, final EditText ed, final int sbSelect) {
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
...
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
int val = sb.getProgress();
ed.setText(String.valueOf(val));
switch (sbSelect){
case 1: nil[0] = val; break;
case 2: nil[1] = val; break;
case 3: nil[2] = val; break;
}
}
});
return 0;
}
请帮帮我! 我有 3 个搜索栏和 3 个编辑文本。 我只需要基于搜索栏进度更改的每个编辑文本的值。 这是我的代码:
public class Main extends Activity {
int nil,nil1,nil2,nil3;
@Override
protected void onCreate(Bundle savedInstanceState) {
//sb1 for seekBar1 ... etc
//ed1 for editText1 ... etc
sbValue(sb1, ed1);
nil1 = nil; // I think I failed to get value in here
sbValue(sb2, ed2);
nil2 = nil;
sbValue(sb3, ed3);
nil3 = nil;
Button btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("","nil1 = "+nil1+"nil2 = "+nil2+"nil3 = "+nil3);
}
});
}
它是 sbValue 方法
public int sbValue(final SeekBar sb, final EditText ed) {
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
...
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
int val = sb.getProgress();
ed.setText(String.valueOf(val));
nil = val; //here is okay, the value is right.
}
});
//but when I tried to get Log from here, It always give me 0.
return 0;
}
}
您正在尝试获取进度状态并且想对此做些什么。
您正在 onProgressChanged 方法中检查进度状态。所以你知道你只能在 onProgressChanged 内部获得进度那么你怎么能期望方法外部的进度状态或值。
想实现什么就在方法里面实现
我明白了。我将 nil 的变量更改为数组:
int[] nil = new int[3];
然后添加了描述edittext的参数。
sbValue(sb1, ed1, 1);
sbValue(sb2, ed2, 2);
sbValue(sb3, ed3, 3);
方法是这样的:
public int sbValue(final SeekBar sb, final EditText ed, final int sbSelect) {
sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
...
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
int val = sb.getProgress();
ed.setText(String.valueOf(val));
switch (sbSelect){
case 1: nil[0] = val; break;
case 2: nil[1] = val; break;
case 3: nil[2] = val; break;
}
}
});
return 0;
}