从databasehelper访问字符串资源

时间:2015-05-05 15:15:20

标签: android string sqlite

我需要将一些默认数据放到数据库中。我在databasehelper中创建了方法:

private void putDefaultList(SQLiteDatabase db){
    String nazwaa = null;
    String mark = "0";

    ArrayList<String> nazwa = new ArrayList<>();
    nazwa.add("jjjjjj");
    nazwa.add("kokoko");

    for (int i =0; i<nazwa.size(); i++) {

        nazwaa = nazwa.get(i);
        db.execSQL("INSERT INTO " + TodoTable.TABLE_NAME + " (" + TodoTable.COL_2 + ", " + TodoTable.COL_3 + ") VALUES (" + "'" + nazwaa + "'" + ", " + "'" + mark + "'" + ")");
    }

这种方法有效,但我需要有不同的语言,所以最简单的方法是访问strings.xml,但我不知道在这种情况下如何。

我试过了 。Resources.getSystem()的getString(R.string.jjjjjj)); 但这会让我的应用程序崩溃

2 个答案:

答案 0 :(得分:4)

public class DbHelper extends SQLiteOpenHelper {

    private Context context;

    public DbHelper(Context context, String name, int version) {
        super(context, name, null, version);

        // Application Context
        this.context = context.getApplicationContext();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        String res = this.context.getString(String_resId);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

}

答案 1 :(得分:0)

您可以创建类App:

public class App extends Application {

    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = this;
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
    }

    public static Context getContext() {
        return mContext;
    }
}

然后,在AndroidManifest.xml中:

  <application android:name="App" 
        <!-- More properties-->
  >
  </application>

现在,在数据库助手中,您可以通过以下方式获取上下文:

Context context = App.getContext();

所需的字符串:

String myString = context.getResources().getString(R.string.jjjjjj);

希望它有所帮助!