내부 클래스 외부에서 onProgressChanged 메서드의 진행 변수를 사용하고 싶습니다. 외부 클래스에 정의 된 메서드를 사용하려고 시도하고 내부 클래스에서 호출하여 해당 값을 가져 왔습니다. 그러나 매번 0이됩니다.
진행 변수의 업데이트 된 값이 없습니다. 기본적으로 SeekBar의 업데이트 된 가치를 얻는 안드로이드 앱입니다.
더 나은 이해를 위해 코드를 살펴보십시오. 현재 진행 상황의 이전/마지막 값만 표시됩니다. 변경된 값을 즉시 업데이트하지 않습니다.ProgressBar 값이 변경되지 않습니다.
Button gene;
ImageView image;
SeekBar ring_bar;
String collect;
private AudioManager am;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_prof);
gene = (Button) findViewById(R.id.gene);
image = (ImageView) findViewById(R.id.image);
ring_bar = (SeekBar) findViewById(R.id.ring_bar);
am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int maxV = am.getStreamMaxVolume(AudioManager.STREAM_RING);
int curV = am.getStreamVolume(AudioManager.STREAM_RING);
ring_bar.setMax(maxV);
ring_bar.setProgress(curV);
ring_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {
am.setStreamVolume(AudioManager.STREAM_RING, progress, 0);
}
});
int ring = ring_bar.getProgress();
String ringgg = Integer.toString(ring);
collect = ringgg;
gene.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try{
BitMatrix bitMatrix = multiFormatWriter.encode(collect, BarcodeFormat.QR_CODE,200,200);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
image.setImageBitmap(bitmap);
}
catch (WriterException e){
e.printStackTrace();
}
}
});
}
}
그렇다면 'am.setStreamVolume'이 작동하지 않는다는 말입니까? 방금 코드를 복사했고 나에게 잘 작동합니다. – Altoyyr
@Altoyyr 내 관심사는이 문제가 아닙니다. 변경된 진도 값에 대해 QR을 생성하므로 진도의 가치를 원합니다. 그러나 나는 내가 바꾼 최신 진보 가치를 얻지 못한다. 나는 단지 내가 지난 번에 바꾼 가치를 얻는다. ring_bar.getProgress()가 나에게이 마지막 진도 값을 제공하고 있지만 최신 값이 필요합니다. 내 요점은? –