我想知道 android SeekBars OnSeekBarChangeListener 的行为。特别是,onProgressChanged 方法是否仅在搜索栏上的第一次和最后一次触摸时通知?
我正在尝试刷新一个应该显示 SeekBar 当前进度的 TextView。但是 TextView 只是在第一次触摸和最后一次触摸时更新。调试这证实了我的假设,即这个方法只被调用了两次:(我想要的是 TextView 显示 SeekBar 中的每一个进度变化。
简而言之:我正在寻找一种可能性来获得一个进度监听器,该监听器在每次小的进度更改时都会被调用。
最佳答案
希望对你有帮助:
final TextView t1=new TextView(this);
t1.setText("Hello Android");
final SeekBar sk=(SeekBar) findViewById(R.id.seekBar1);
sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
// TODO Auto-generated method stub
t1.setTextSize(progress);
Toast.makeText(getApplicationContext(), String.valueOf(progress),Toast.LENGTH_LONG).show();
}
});
关于Android SeekBar setOnSeekBarChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956218/
在我维护的一些代码中,我注意到有两种不同的方式来注册共享偏好更改监听器:(1)直接的方法,包含注册成员函数的类实现SharedPreferences.OnSharedPreferenceChangeListener.preferences.registerOnSharedPreferenceChangeListener(mImageView);(2)间接方法,其中可能包含已注册成员函数的类最好不要实现SharedPreferences.OnSharedPreferenceChangeListener。出于某种原因,而是选择定义和实例化一个专用于此监听器的全新类:SharedPrefer
这个问题在这里已经有了答案:SharedPreferences.onSharedPreferenceChangeListenernotbeingcalledconsistently(8个答案)关闭9年前。我已经在我的Activity中使用SharedPreferences注册了registerOnSharedPreferenceChangeListener。当我在不同进程中运行的服务中更改使用SharedPreferences保存的数据时,不会调用onSharedPreferenceChanged!我应该怎么做才能让android调用onSharedPreferenceChanged?