setOnTouchListener

M

mitch_HD2

Fortgeschrittenes Mitglied
1
Ich wieder^^
ich brauch mal eine Starthilfe ich komm irgendwie nicht drauf

habe 16 buttons.. die dann einzelt auf ontouch regieren

für einen hab ich nun
Code:
public boolean onTouch(View v, MotionEvent event) {
		int merker =1;
		byte[] buf = null;
		adress = (EditText) this.findViewById(R.id.IP);  
	    ip = adress.getText().toString(); 	//edittbox in string
	        		    
	    if(merker==1){
	    try {
        	InetAddress serverAddr = InetAddress.getByName(ip); //die IP vom editttext wird in einer Internetadresse umgewandelt 
			DatagramSocket socket = new DatagramSocket();
			
				if(event.getAction()==MotionEvent.ACTION_DOWN)
					{
					buf = (K1).getBytes();
					btn1.setChecked(true);
					}
				if(event.getAction()==MotionEvent.ACTION_UP)
					{
					buf = (K1).getBytes();
					}
				
				DatagramPacket packet = new DatagramPacket(buf, buf.length,	serverAddr, Port);
				socket.send(packet);
				
			} 
	    catch (Exception e) 
	    {
				AlertDialog.Builder alert = new AlertDialog.Builder(this);//alert ausgeben show nicht vergessen;)
	    		alert.setTitle("Fehler");// überschrift des buttons
	    		alert.setMessage("Verbindungsfehler");//Text des Buttons
	    		alert.setPositiveButton("OK", null);//Position des OK Buttons
	    		alert.show();//zeigt alert an
			}     	
			}
			
		merker = 0;
		return false;
	}
        
	}

aber wie mach ich das nun für 16?


und noch eine frage

Code:
 public void onCreate(Bundle icicle) {
        super.onCreate(icicle);	
        setContentView(R.layout.main);
        
        btn1 = (ToggleButton) findViewById(R.id.S1);	
        btn1.setOnTouchListener(this);
        btn1.setOnTouchListener(this); 
        
        btn2 = (ToggleButton) findViewById(R.id.S2);	
        btn2.setOnClickListener(this);
        btn2.setOnTouchListener(this); 
       
        btn3 = (ToggleButton) findViewById(R.id.S3);	
        btn3.setOnClickListener(this);
        btn3.setOnTouchListener(this);
        
        btn4 = (ToggleButton) findViewById(R.id.S4);	
        btn4.setOnClickListener(this);
        btn4.setOnTouchListener(this); 
        
        btn5 = (ToggleButton) findViewById(R.id.S5);	
        btn5.setOnClickListener(this);
        btn5.setOnTouchListener(this); 
...............


wie kann ich das ganze in eine for schleife fassen?

danke
 
Ich würde die Buttons nicht ins XML legen sondern gleich dynamisch erzeugen und in ein Array oder eine ArrayListe legen, dann kannst du auch mit einer Schleife durchlaufen.

Außerdem bekommt ein Button (wenn ich mich jetzt nicht ganz irre) einen OnClick-Listener und keinen OnTouch-Listener ;-)
 
ja ich weiß...
aber ich benutze den ontouch damit der den befehl solange schickt solange der button gedrückt ist
 
Code:
private static final int[] myButtonIds = { R.id.button1, R.id.button2, R.id.button3 }

(...)

for(int id : myButtonIds) {
  Button btn = (Button)findViewById(id);

(...)

public boolean onTouch(View v, MotionEvent event) {
   switch(v.getId) {
   case R.id.button1:
      (...)
 
das sieht schon besser aus:) aber
Code:
Button btn = (Button)findViewById(id);

der muss doch auch btn1, btn2, btn3 usw. haben..
so schreibt der alles in btn
 
Klar, aber btn ist bei jedem Schleifendurchlauf ein anderer ;)
 
aber woher weißt der onTouch denn dann welchen der benutzen soll?
 
Öhm was?
 
ich habe doch 16buttons

und der onTouchlistener muss doch jetzt auch wissen welches button gedrückt wird!?
 
das steht doch oben im switch ...
 
ja danke:D hab das überlesen^^

aber leider klappt es immernoch nicht.. .es kommt zwar nicht zum absturz aber er tut es nicht....

habe es zum test mit der ausgabe einer textview gemacht
Code:
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);	
        setContentView(R.layout.main);
        
        TW1 = (TextView) this.findViewById(R.id.TW);
        TW1.setText("test") ;
        btn = (ToggleButton)findViewById(R.id.S1);
        btn1 = (ToggleButton)findViewById(R.id.S2);
        btn.setOnTouchListener(this);
        btn1.setOnTouchListener(this);
        for(int id:myButtonIds) {
	  		  btn = (ToggleButton)findViewById(id);
	    	}      
    } 
    
    public void onClick(View v) {	
    }

	public boolean onTouch(View v, MotionEvent event) {
	
	adress = (EditText) this.findViewById(R.id.IP);  
	ip = adress.getText().toString(); 	//edittbox in string
	    
		switch(v.getId()) 
	    {
	    case R.id.S1: TW1.setText("test1"); break;
	    case R.id.S2: TW1.setText("test2"); break;
	    }
 
hast du den buttons auch alle eine ID im XML gegeben?
 
jap hab ich... S1 -S16
 
wobei es eigentlich so aussieht.. also die zeilen vor der for schleife sind kommentiert

Code:
private static final int[] myButtonIds = {R.id.S1, R.id.S2, R.id.S3, R.id.S4, R.id.S5 ,R.id.S6,R.id.S7,R.id.S8 ,R.id.S9 ,R.id.S10,R.id.S11,R.id.S12,R.id.S13,R.id.S14,R.id.S15,R.id.S16 };

......
......

public void onCreate(Bundle icicle) {
        super.onCreate(icicle);	
        setContentView(R.layout.main);
        
        TW1 = (TextView) this.findViewById(R.id.TW);
        TW1.setText("test") ;
        //btn = (ToggleButton)findViewById(R.id.S1);
        //btn1 = (ToggleButton)findViewById(R.id.S2);
        //btn.setOnTouchListener(this);
        //btn1.setOnTouchListener(this);
        for(int id:myButtonIds) {
	  		  btn = (ToggleButton)findViewById(id);
	  		  btn.setOnTouchListener(this);
	    	}
        

    } 
    
    public void onClick(View v) {	
    }

	public boolean onTouch(View v, MotionEvent event) {
	
		adress = (EditText) this.findViewById(R.id.IP);  
	    ip = adress.getText().toString(); 	//edittbox in string
	    
		switch(v.getId()) 
	    {
	    case R.id.S1: TW1.setText("test1"); break;
	    case R.id.S2: TW1.setText("test2"); break;
	    }
	
	   
		return false;
	}
 
edit: Oh, verlesen...
 
im switch fragst du aber die id der view ab -> button.getID(), was aber nichts mit der R.id.S1 zu tun hat, die du dir im Array merkst.
 
ups ja, da hab ich mich vertan, werd schon ganz wirr hier ;-)
 

Ähnliche Themen

P
Antworten
1
Aufrufe
596
swordi
S
K
  • krackmoe
Antworten
3
Aufrufe
2.339
Unicate
U
Bobert
Antworten
0
Aufrufe
866
Bobert
Bobert
Zurück
Oben Unten