在keyDown上更新TextView?

时间:2011-08-11 04:05:19

标签: java android events textview keylistener

我正在尝试更新将显示系统音量的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;
        }
    });

2 个答案:

答案 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()方法的结束括号之后。