Creé una actividad en el estudio de Android y he puesto algo así como 20 ImageButton s. Quiero usarlo ya que con cada clic en una imagen se moverá a una nueva actividad. Todos los botones de imagen funcionan con el mismo principio, mi aplicación es un juego y cada imagen representa un nivel. Quiero crear una función que se utilizará en todos los botones y moverá al usuario a una nueva actividad de acuerdo con los datos (las propiedades del botón de imagen) y usará esos datos en la nueva actividad. Cada nivel tiene su propia actividad y la actividad principal es el menú del juego.

A continuación se muestra mi código:

public ImageButton beatsCall; public void Beats(){ beatsCall=(ImageButton)findViewById(R.id.beats); beatsCall.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent toy = new Intent(Levels.this,Beats.class); startActivity(toy); } }); }
0
R.Jiny 24 feb. 2017 a las 23:43

3 respuestas

La mejor respuesta

Debe proporcionar más información y código. Sin embargo, puede intentar configurar un onClickListener distinto y luego configurar todos los imageButtons para ese oyente que realizará una acción dependiendo del botón en el que se haga clic. Por ejemplo, digamos que tiene 4 imageButtons y desea realizar una acción diferente (en su caso, iniciar una nueva actividad) para cada clic de botón diferente.

View.OnClickListener listener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.button1:
                //Start activity 1 here, for example
                Intent intent = new Intent(this, YourNewActivity1.class);
                String message = v.getId().toString;
                intent.putExtra(EXTRA_MESSAGE, message);
                startActivity(intent);
                break;
            case R.id.textView2:
                //Start activity 2 here
                break;
            case R.id.textView3:
                //Start activity 3 here
                break;
            case R.id.textView4:
                //Start activity 4 here
        }

    }
};

button1.setOnClickListener(listener);
button2.setOnClickListener(listener);
button3.setOnClickListener(listener);
button4.setOnClickListener(listener);

Esto supone que tiene los imageButtons configurados en su archivo de diseño y los tiene inicializados en su actividad.

En su nueva actividad, puede recibir el mensaje como tal:

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
if (some condition with message){
      do something
}

También puede consultar esta documentación para obtener más información sobre los intentos .

1
skbrhmn 24 feb. 2017 a las 21:12

¿Algo como esto? En su xml haga clic en sus imágenes y deles identificaciones como esta ...

<ImageView
            android:id="@+id/level_1_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:clickable="true"
            />

Luego llame a una función como esta en onCreate de su Actividad

private void setupButtons() {
    findViewById(R.id.level_1_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getApplication(), LevelOne.class));
        }
    });

    findViewById(R.id.level_2_button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getApplication(), LevelTwo.class));
        }
    });
}
0
John Oberhauser 24 feb. 2017 a las 20:58

Puede asignar una etiqueta a través de Android: etiquetar a cada una de sus vistas y luego usar su único oyente para activar la etiqueta de la vista para bifurcar el comportamiento que desea.

0
user1536336 24 feb. 2017 a las 21:09