我正在尝试更新将显示系统音量的TextView。我已设法捕获当前系统音量并显示它,但是当音量调高/调低时(显然)它不会更新。
我知道有一个简单的解决方案我无法思考! onKeyListeners?
我现在正在使用它,但它不起作用:
TextView sysVol = (TextView)findViewById(R.id.systemVolume);
sysVol.setOnKeyListener(new OnKeyListener()
{
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
//system volume
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int i = curVolume * 4;
String aString = Integer.toString(i);
TextView sysVol = (TextView)findViewById(R.id.systemVolume);
sysVol.setText(aString);
return true;
}
return false;
}
});
答案 0 :(得分:0)
嗯,伪方法将是以下场景:
1) Attach a listener to the view
2) Filter the different events in the callback
3) Update the TextView upon the (event==volume_up OR event==volume_down)
基本上,您希望将此View.onKey()
- 方法实施为道路上的小碰撞,而不是当前的包版状态。
摘要:将以下代码段添加到您的代码中(需要进行一些修改)
public YourClassHere extends SomethingCool implements OnKeyListener /*<-- important part*/
{
public boolean onKey(View v) {
// do something when the selected button is pushed
return true;
}
}
答案 1 :(得分:0)
我认为问题是在更改文本后textview没有刷新。更改文本后刷新文本视图,尝试放置sysVol.requestLayout()
。另外,我认为你不应该把return false
放在onKey()方法的结束括号之后。