[Resolvido]Varios Botoes com switch que use setOnclickListener(onTouch)

Boa tarde,tenho numa aplicação vários botoes,que uso o método boolean onTouch dentro de setOnclickListener,mas para cada botão,tenho que(esqueci como se fala)meio que “instanciar” cada botão,assim ficando um código extenso.

Teria como colocar esses tipos de botoes em um switch?

Link do projeto que estou fazendo Projeto GitHub(eclipse)

Abaixo o exemplo do meu código dos botoes de onTouch sem switch.

Igor,

Pelo que vi no seu código, tenho quase certeza que dá pra você adicionar esse botões dinamicamente através de um loop, isso se vc já não tiver fazendo isso:

Exemplo:

Código do seu xml:

<LinearLayout
    android:orientation="vertical"
    android:id="@+id/llBotoes"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

E depois no seu código java algo como:

    LinearLayout llBotoes = (LinearLayout)findViewById(R.id.llBotoes);

    for (int cont = 1; cont <= 10; cont++) {
        Button bt = new Button(this);
        bt.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                //faça o que vc quer fazer aqui....
                return false;
            }
        });
        llBotoes.addView();
    }

Perceba que seu código está muito repetitivo (a única coisa que muda é msg.obj = b).
Explica um pouco do seu código, que agente te ajuda a melhorar.

A aplicação seria um joystick para controlar robo trekking(ou Carrinho) pelo arduino.

No meu caso msg.obj pode receber as strings a,b,c…, que contem os dados que irei enviar ao deixar pressionado o botao.
Por exemplo enquanto mantenho pressionado btn4 ele enviara o conteúdo que esta na string a,caso contrario nao enviara nada.

A aplicação esta funcionando corretamente,apenas gostaria de retirar os códigos repetidos e usar uma “Boa pratica” para minimizar o tamanho do código.

Com botoes normais que é clicado apenas umas vez ,é possível fazer switch, mas para meu caso, os botoes estarão pressionados, e fazer do mesmo jeito que é feito com botoes normais não da.

Atualizei a pergunta do tópico, e coloquei o link do meu projeto para quaisquer duvidas.

Bom, não consegui fazer com switch,mas fiz um metodo que implementa OnTouchListener e faz a mesma coisa, diminuiu bastante o código.

Aqui esta o codigo como ficou depois de mudar:

String frente, direita, esquerda, tras, x, y, z, a, b, c;
Button btnConectar, btnFrente, btnDireita, btnEsquerda, btnTras, btn1, btn2, btn3, btn4, btn5, btn6;
.
.
.
...
                btnFrente.setOnTouchListener(new BotaoListener(frente));
		btnEsquerda.setOnTouchListener(new BotaoListener(esquerda));
		btnDireita.setOnTouchListener(new BotaoListener(direita));
		btnTras.setOnTouchListener(new BotaoListener(tras));
		btn1.setOnTouchListener(new BotaoListener(x));
		btn2.setOnTouchListener(new BotaoListener(y));
		btn3.setOnTouchListener(new BotaoListener(z));
		btn4.setOnTouchListener(new BotaoListener(a));
		btn5.setOnTouchListener(new BotaoListener(b));
		btn6.setOnTouchListener(new BotaoListener(c));
.
.
...

Metodo que diminuiu o codigo…

public class BotaoListener implements OnTouchListener {

		private String mensagem;
		
		public BotaoListener(String mensagem) {
			super();
			this.mensagem = mensagem;
		}
		
		@Override
		public boolean onTouch(View v, MotionEvent event) {
			if (btt != null) {
				Message msg = Message.obtain();
				msg.obj = mensagem;
				writeHandler.sendMessage(msg);
			} else {
				Toast.makeText(getApplicationContext(), "Bluetooth nao conectado", Toast.LENGTH_LONG).show();
			}
			return false;
		}
		
	}