2

我正在 android 中构建一个数据库类,它从 getIntent().getStringExtra(name) 函数收集字符串非静态数据。我将这个值放入一个简单的字符串变量(非静态)中。

当我尝试在静态字符串中使用它时,出现错误 - “无法对非静态字段进行静态引用”。

我该如何解决这个问题?这是我的代码:

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
    }

}

}

谢谢你的帮助 :)

4

5 回答 5

3

尝试这个

String saveExtra = null; 
private static String DATABASE_NAME = "save" ;

在 OnCreate

String saveExtra = getIntent().getStringExtra("save");
DATABASE_NAME += saveExtra;
于 2012-04-12T10:02:45.650 回答
1

您的静态变量DATABASE_NAME在加载 SetSql 类后立即初始化,而实例变量saveExtra仅在创建实例时才初始化。

您可以DATABASE_NAME在 SetSql 类构造函数中设置值,但要注意它会影响SetSql 的所有实例,而不仅仅是接收意图的实例。

恕我直言,最简单的选择是设置DATABASE_NAME为实例变量,如saveExtra.

于 2012-04-12T09:57:11.613 回答
0

从活动级别删除这一行String saveExtra = getIntent().getStringExtra("save"); ,并将其写入您的onCreate().

只需在活动级别声明您的变量 saveExtra 。

于 2012-04-12T09:57:22.940 回答
0
private static String saveExtra =null;

onCreate

用这个

saveExtra = getIntent().getStringExtra("save");
于 2012-04-12T09:57:51.767 回答
0

尝试使用静态“getDatabaseName”方法来访问您的字符串。

于 2012-04-12T09:50:31.260 回答