2011-04-18 11 views
34

Actualmente tengo una actividad con algunos botones.Posibilidad de agregar parámetros en el botón xml?

En mi xml, botones se define así:

<ImageButton (...) android:onClick="GoToPageX"/> 

y tengo en mi actividad:

public void GotoPageX() { 
    startActivity(new Intent(this, PageX.class)); 
    finish(); 

} 

El problema es que tengo cientos de botones y no quiero escribir

<ImageButton (...) android:onClick="GoToPage1"/> 
<ImageButton (...) android:onClick="GoToPage2"/> 
<ImageButton (...) android:onClick="GoToPage3"/> 
... 
<ImageButton (...) android:onClick="GoToPage100"/> 

y todas las secuencias de comandos.

ahora estoy utilizando

public void GotoPage(int i) { 
    startActivity(new Intent(getBaseContext(), activities.get(i))); 
    finish(); 
} 

y me gustaría dar el parámetro i del XML, es posible?

Muchas gracias por cualquier ayuda.

+1

Tienes cientos de botones en el código XML? ¿Puedes explicar lo que estás tratando de lograr, exactamente? Seguramente hay una mejor manera.Parece que simplemente podría tener un ListView o GridView con un adaptador configurado para algo así como una matriz de elementos de PageButton (por ejemplo, que contenga: int page, int drawableId). – kcoppock

+0

Cientos en un diseño fue tal vez una exageración de mi parte. De hecho, tengo 4 botones en cada actividad que conducen a diferentes páginas (como un libro, pero un poco diferente) La respuesta de OcuS es perfecta para mí. –

Respuesta

83

No es directamente posible. Sin embargo, tal vez podría usar android:tag para obtener su parámetro.

<ImageButton (...) android:onClick="goToPage" android:tag="25"/> 

public void goToPage(View v) { 
    String pageNumber = v.getTag().toString(); 
    /* ... */ 
} 
+0

Solución agradable y limpia. – teapeng

+2

Cadena pageNumber = v.getTag(). ToString(); – user5195185

2

Si va a crear algún elemento de diseño en XML que puede utilizar no

<ImageButton 
    android:id="@+id/some_id_value" /> 

donde some_id_value es una especie de cadena única que se traduce en Identificación del que se conserva en R.java (mejor para usted-Don 't cambia nada allí) que en el código se puede conseguir que la identificación mediante el uso de

R.id.some_id_value 

leer un poco there que es muy básico.

0

Puede establecer Etiquetas para una vista. Las etiquetas son básicamente una forma de que las vistas tengan recuerdos.

xml:

<ImageButton 
    ...Other Parameters... 
    android:id="@+id/Button2" 
    android:tag="2" 
    android:onClick="GoToPageX"/> 
<ImageButton 
    ...Other Parameters... 
    android:id="@+id/Button3" 
    android:tag="3" 
    android:onClick="GoToPageX"/> 

La línea android:tag="2" fijar un valor de etiqueta de 2 (tipo de datos de cadena) a Button2

archivo Java:

caso general:
Dentro de la función GoToPageX(View v), use v.getTag() para obtener el valor de la etiqueta de la vista correspondiente (Desde qué punto de vista se llamó al método).

su caso:
Añadir el método de la siguiente manera

public void GoToPageX(View v){ 
    int i = Integer.parseInt(v.getTag()); //parseInt converts string to integer 
    startActivity(new Intent(getBaseContext(), activities.get(i))); 
    finish(); 
} 
Cuestiones relacionadas