我在android中构建一个数据库类,它从getIntent()。getStringExtra(name)函数中收集String非静态数据。 我的这个值是一个简单的字符串变量(非静态)。
当我试图在静态字符串中使用它时,我收到一个错误 - “无法对非静态字段进行静态引用”。
我该如何解决这个问题?这是我的代码:
package ent.com;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
public class SetSql extends Activity{
String saveExtra = getIntent().getStringExtra("save");
public static final String KEY_ROWID = "_id";
public static final String KEY_SAVE = "save_name";
public static final String KEY_STADUIM = "stadium_size";
public static final String KEY_FINANCE = "total_money";
public static final String KEY_PLAYERS = "players";
private static String DATABASE_NAME = "save" + saveExtra;
private static final String DATABASE_TABLE = "save_data";
private static final int DATABASE_VERSION = 1;
private static class DbHelper extends SQLiteOpenHelper{
public DbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
}
}
}
感谢您的帮助:)
答案 0 :(得分:3)
试试这个
String saveExtra = null;
private static String DATABASE_NAME = "save" ;
在OnCreate
String saveExtra = getIntent().getStringExtra("save");
DATABASE_NAME += saveExtra;
答案 1 :(得分:1)
只要加载了SetSql类,就会初始化静态变量DATABASE_NAME
,而实例变量saveExtra
仅在创建实例时初始化。
您可以在SetSql类构造函数中设置DATABASE_NAME
值,但要注意它会影响SetSql的所有实例,而不仅仅是收到意图的实例。
恕我直言,最简单的选择是将DATABASE_NAME
设置为saveExtra
之类的实例变量。
答案 2 :(得分:0)
尝试制作一个静态" getDatabaseName"用于访问字符串的方法。
答案 3 :(得分:0)
从活动级别删除此行String saveExtra = getIntent().getStringExtra("save");
,并将其写入onCreate()
。
只需在活动级别声明变量saveExtra。
答案 4 :(得分:0)
private static String saveExtra =null;
in
onCreate
使用此
saveExtra = getIntent().getStringExtra("save");