public class BobDatabase extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "bob.db";
private static final int DATABASE_VERSION = 1;
public static final String DEFAULT_PROFILE = "default_profile";
public BobDatabase(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database)
{
createProfileTable(database);
createTimeTable(database);
createEventTable(database);
createLocationTable(database);
}
/**
* Creates a table for Profile objects, executes the string create_profile_table_sql
* contained within strings.xml
* @param database
*/
public void createProfileTable(SQLiteDatabase database)
{
database.execSQL(Resources.getSystem().getString(R.string.create_profile_table_sql));
}}
consigo este error¿Por qué no puedo usar Resources.getSystem() sin un error de tiempo de ejecución?
01-14 12: 20: 57.591: E/Android Runtime (1825): Causado por: android.content.res.Resources $ NotFoundException: String ID de recurso # 0x7f040003
el código que hace que el error es la única línea dentro createProfileTable específicamente, Resources.getSystem(). getString (R.string.create_profile_table_sql) si uso una variable de clase para mantener un contexto y hacer context.getString (R.string.create_profile_table_sql) No entiendo cualquier error pero no quiero hacer eso porque quiero evitar pérdidas de memoria y de acuerdo con lo que sé, esto debería funcionar. ¿Alguna idea de lo que está pasando?
Esto realmente no responde a su pregunta, pero los recursos de String generalmente son para cadenas desplegables por el usuario (para que pueda proporcionar diferentes idiomas más adelante si lo desea). En esta situación, definir una cadena constante que defina tu declaración de creación estaría bien. – Brandon