来自android类的xml字符串

来自android类的xml字符串,android,xml,database,string,sqlite,Android,Xml,Database,String,Sqlite,如果我引用静态变量中的数据库名称,则该代码会使应用程序崩溃。当我试图从strings.xml获取它时,它会使应用程序崩溃。知道为什么失败了吗?这是一个类而不是一个活动,所以我导入了android.content.res.Resources。如果我尝试context.getString,它也会崩溃 import android.content.Context; import android.content.res.Resources; import android.database.sqlite.

如果我引用静态变量中的数据库名称,则该代码会使应用程序崩溃。当我试图从strings.xml获取它时,它会使应用程序崩溃。知道为什么失败了吗?这是一个类而不是一个活动,所以我导入了android.content.res.Resources。如果我尝试context.getString,它也会崩溃

import android.content.Context;
import android.content.res.Resources;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {

//public static final String DATABASE_NAME = "library.db";
public static final String TITLE = "title";
public static final String AUTHOR = "author";
public static final String ISBN = "isbn";


public DatabaseHelper(Context context) {
    super(context, Resources.getSystem().getString(R.string.DATABASE_NAME), null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE books (_id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, author TEXT, isbn TEXT);");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub

}
}这是错误的

super(context, Resources.getSystem().getString(R.string.DATABASE_NAME), null, 1);
试试这个

super(context, context.getResources().getString(R.string.DATABASE_NAME), null, 1);
改变
Resources.getSystem().getString(R.string.DATABASE\u NAME)


您不需要为数据库名称使用字符串资源,事实上,这样做没有多大意义。字符串资源主要用于用户将看到的任何内容,因此您可以为其他配置(特别是其他语言)提供替代资源。您提供的基本上是数据库的文件名。由于这完全是应用程序内部的,用户永远看不到它,所以您应该使用一个静态的最终字符串作为数据库文件的名称

/* Database file name */
private static final String BD_NAME = "something.db";

public DatabaseHelper(Context context) {
    super(context, DB_NAME, null, null);
}

尝试context.getResource().getString(R.string.DATABASE_NAME);我知道是什么错了,伙计们。白痴我使用的是硬编码查询,表名错误。给出了一个空指针错误并崩溃了我很抱歉我浪费了大家的时间。没有仍然是即时崩溃,但是在不扩展此类活动的情况下,如何从strings.xml获取值呢?如果我有其他方法没有仍然是即时崩溃,但是,在不扩展此类活动的情况下,如何从strings.xml获取值呢?如果我有其他方法呢?我想这在设计方面是有意义的。当我有一个静态的最终字符串时,它确实起作用了。我不明白为什么应用程序在我试图从xml获取字符串的那一刻崩溃了,但是如果我们从string.xml获取字符串会有什么问题,除非我看到logcat消息,否则我不知道。我只是android开发的新手,我只是刚刚熟悉适当的约定,我认为最好将所有内容都放在strings.xml中,但是我可以看到,约定只是为了生成一个静态字符串。现在我只是想知道是什么导致了这次撞车
/* Database file name */
private static final String BD_NAME = "something.db";

public DatabaseHelper(Context context) {
    super(context, DB_NAME, null, null);
}