Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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 setOnTouchListener中的访问循环变量_Java_Android_Ontouchlistener_Ontouch - Fatal编程技术网

Java setOnTouchListener中的访问循环变量

Java setOnTouchListener中的访问循环变量,java,android,ontouchlistener,ontouch,Java,Android,Ontouchlistener,Ontouch,我正在循环中创建OnTouchListeners: for(int i = 0; i < buttons.length; i++){ for(int j = 0; j < buttons[i].length; j++ ){ String buttonID = "button" + i + j; int resID = getResources().getIdentifier(buttonID, "id", getPack

我正在循环中创建OnTouchListeners:

for(int i = 0; i < buttons.length; i++){
        for(int j = 0; j < buttons[i].length; j++ ){
            String buttonID = "button" + i + j;
            int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
            buttons[i][j] = (Button) findViewById(resID);
            buttons[i][j].setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View arg0, MotionEvent arg1) {
                    if (arg1.getAction() == MotionEvent.ACTION_DOWN){
                        socket.emit("button down", "button" + i + j);
                        return false;
                    }
                    if (arg1.getAction() == MotionEvent.ACTION_UP){
                        socket.emit("button up", "button" + i + j);
                        return false;
                    }
                    return true;
                }
            });
        }
    }
for(int i=0;i
如何访问setOnTouchListener函数中的变量I和j。我不能将它们声明为final,因为它们是循环变量。(inti=0;ifor(int i = 0; i < buttons.length; i++){ final int iNow = i; for(int j = 0; j < buttons[i].length; j++ ){ final int jNow = j; String buttonID = "button" + i + j; int resID = getResources().getIdentifier(buttonID, "id", getPackageName()); buttons[i][j] = (Button) findViewById(resID); buttons[i][j].setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { if (arg1.getAction() == MotionEvent.ACTION_DOWN){ socket.emit("button down", "button" + iNow + jNow); return false; } if (arg1.getAction() == MotionEvent.ACTION_UP){ socket.emit("button up", "button" + iNow + jNow); return false; } return true; } }); } } 最终int iNow=i; 对于(int j=0;j<按钮[i]。长度;j++){ 最终整数jNow=j; 字符串buttonID=“button”+i+j; int resID=getResources().getIdentifier(buttonID,“id”,getPackageName()); 按钮[i][j]=(按钮)findViewById(剩余); 按钮[i][j].setOnTouchListener(新视图.OnTouchListener(){ @凌驾 公共布尔onTouch(视图arg0、运动事件arg1){ if(arg1.getAction()==MotionEvent.ACTION\u向下){ 发出(“按钮按下”、“按钮”+iNow+jNow”); 返回false; } 如果(arg1.getAction()==MotionEvent.ACTION\u UP){ 插座发射(“按钮向上”,“按钮”+iNow+jNow); 返回false; } 返回true; } }); } }
我只是简单地将当前按钮的id返回到循环中:

for(int i = 0; i < buttons.length; i++){
        for(int j = 0; j < buttons[i].length; j++ ){
            String buttonID = "button" + i + j;
            int resID = getResources().getIdentifier(buttonID, "id", getPackageName());
            buttons[i][j] = (Button) findViewById(resID);
            buttons[i][j].setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View arg0, MotionEvent arg1) {
                    if (arg1.getAction() == MotionEvent.ACTION_DOWN){
                        socket.emit("button down", getResources().getResourceEntryName(arg0.getId()));
                        return false;
                    }
                    if (arg1.getAction() == MotionEvent.ACTION_UP){
                        socket.emit("button up", getResources().getResourceEntryName(arg0.getId()));
                        return false;
                    }
                    return true;
                }
            });
        }
    }
for(int i=0;i
全局获取变量。是否确实要创建那么多触控式侦听器?在按钮上设置标签,并在全局触控模式下检索此标签listener@Olayinka我该怎么做?