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));
}}
ottengo questo errorePerché non posso utilizzare Resources.getSystem() senza un errore di runtime?
01-14 12: 20: 57,591: E/AndroidRuntime (1825): a causa di: android.content.res.Resources $ NotFoundException: String ID di risorsa # 0x7f040003
il codice che causa l'errore è la linea singola all'interno createProfileTable specificamente, Resources.getSystem(). getString (R.string.create_profile_table_sql) se uso una variabile di classe per contenere un contesto e fare context.getString (R.string.create_profile_table_sql) Non capisco eventuali errori ma non voglio farlo perché voglio evitare perdite di memoria e in base a ciò che so dovrebbe funzionare. Qualche idea su cosa sta succedendo?
Questo in realtà non risponde alla tua domanda, ma le risorse String sono generalmente per le stringhe visualizzabili dall'utente (in modo che tu possa fornire lingue diverse in seguito, se lo desideri). In questa situazione, definire una stringa costante che definisce la tua dichiarazione di creazione andrebbe bene. – Brandon