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));
}}
bu hatayıNeden Çalışma Zamanı hatası olmadan Resources.getSystem() kullanamıyorum? 20:
01-14 12 olsun 57,591: E/AndroidRuntime (1825): android.content.res.Resources $ NotFoundException: Neden Olduğu Dize kaynak kimliği # 0x7f040003
hataya neden olurkod createProfileTable içindeki tek sıra spesifik olarak, Resources.getSystem(). getString (R.string.create_profile_table_sql) bir bağlam tutun ve context.getString yapmak için bir sınıf değişkeni kullanmak durumunda (R.string.create_profile_table_sql) Anlamıyorum hatalar ama bunu yapmak istemiyorum çünkü bellek sızıntılarını önlemek istiyorum ve bildiğim göre bu işe yaramalı. Ne olduğuna dair bir fikrin var mı?
Bu, sorunuzu gerçekten yanıtlamıyor, ancak Dize kaynakları genellikle kullanıcı tarafından görüntülenebilir Dizeler içindir (böylece daha sonra farklı diller sağlayabilirsiniz). Bu durumda, oluşturma ifadenizi tanımlayan sabit bir dizeyi tanımlamak iyi olur. – Brandon