Quiero crear una tabla hash estática Tabla hash para convertir cadenas a enteros. La advertencia aquí es que quiero usar cadenas Definí como recursos en varias listas en archivos XML.¿Es posible obtener recursos dentro de un bloque de contexto estático?
soy capaz de escribir esto, el uso de identificadores únicos recursos:
public class MyActivity extends Activity {
private static Map<Integer, Integer> views = new HashMap<Integer, Integer>();
static {
views.put(R.string.full_text, MessageTable.VIEW_FULL);
views.put(R.string.only_text, MessageTable.VIEW_MSG);
views.put(R.string.tag_text, MessageTable.VIEW_TAGMSG);
}
me sale ningún error, pero lo que realmente necesita hacer es algo como esto:
public class MyActivity extends Activity {
private static Map<String, Integer> views = new HashMap<String, Integer>();
static {
views.put(getResources().getString(R.string.full_text), MessageTable.VIEW_FULL);
views.put(getResources().getString(R.string.only_text), MessageTable.VIEW_MSG);
views.put(getResources().getString(R.string.tag_text), MessageTable.VIEW_TAGMSG);
}
que da mí el siguiente error en Eclipse:
Cannot make a static reference to the non-static method getResources() from the type ContextWrapper
el mensaje tiene sentido, pero lo que no tiene sentido i s que los recursos son inalcanzables desde el bloque estático, uno pensaría que las variables estáticas se crearon a medida para hacer uso de los recursos.
Supongo que puedo llenar la tabla Hash durante el constructor del objeto, pero esto significaría hacerlo en el lugar equivocado.
¿Por qué quieres cargar todo eso en un mapa hash? ¿No estaría bien simplemente hacer referencia al recurso y cargarlo en una cadena cuando la necesite de forma no estática? Supongo que no entiendo completamente la aplicación. – shibbybird