Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否在按下键时更新TextView?_Java_Android_Events_Textview_Keylistener - Fatal编程技术网

Java 是否在按下键时更新TextView?

Java 是否在按下键时更新TextView?,java,android,events,textview,keylistener,Java,Android,Events,Textview,Keylistener,我正在尝试更新显示系统卷的TextView。我已成功捕获当前系统卷并显示它,但当卷打开/关闭时它不会更新(显然) 我知道在某个地方有一个简单的解决办法,我就是想不出来!onKeyListeners 我现在正在使用这个,但它不起作用: TextView sysVol = (TextView)findViewById(R.id.systemVolume); sysVol.setOnKeyListener(new OnKeyListener() {

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

那么,伪方法将是以下场景:

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()
-方法,使其成为道路上的小颠簸,而不是当前的路障状态

摘要:将以下代码段添加到代码中(需要进行一些修改)


publicYourClasshere扩展了一些很酷的实现OnKeyListener/*我认为问题在于,更改文本后,textview没有刷新。更改文本以刷新文本视图后,请尝试放置
sysVol.requestLayout()
。另外,我不认为您应该在onKey()方法的结束括号后放置
return false

我有一些代码,上面的代码看起来像我需要的,但不起作用,有什么想法吗?我很有希望,但它不起作用。如果键不是vol up或down,则需要返回false如果调用
invalidate()
?它应该强制重新绘制元素
sysVol.invalidate()
是一种尝试方法。
public YourClassHere extends SomethingCool implements OnKeyListener /*<-- important part*/
{
    public boolean onKey(View v) {
      // do something when the selected button is pushed
      return true;
    }
}