Android非静态字符串到静态字符串错误

时间:2012-04-12 09:42:40

标签: java android sqlite static non-static

我在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
    }

}

}

感谢您的帮助:)

5 个答案:

答案 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");