Java Android非静态字符串到静态字符串错误
我正在android中构建一个数据库类,它从getIntent().getStringExtra(name)函数收集字符串非静态数据。 我将这个值放入一个简单的字符串变量(非静态) 当我试图在静态字符串中使用它时,我得到一个错误——“不能对非静态字段进行静态引用” 我怎样才能解决这个问题?这是我的密码:Java Android非静态字符串到静态字符串错误,java,android,sqlite,static,non-static,Java,Android,Sqlite,Static,Non Static,我正在android中构建一个数据库类,它从getIntent().getStringExtra(name)函数收集字符串非静态数据。 我将这个值放入一个简单的字符串变量(非静态) 当我试图在静态字符串中使用它时,我得到一个错误——“不能对非静态字段进行静态引用” 我怎样才能解决这个问题?这是我的密码: package ent.com; import android.app.Activity; import android.content.Context; import android.dat
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
}
}
}
感谢您的帮助:)尝试创建一个静态的“getDatabaseName”方法来访问您的字符串。尝试创建一个静态的“getDatabaseName”方法来访问您的字符串。加载SetSql类后,您的静态变量
DATABASE_NAME
即被初始化,而实例变量saveExtra
仅在创建实例时初始化
您可以在SetSql类构造函数中设置DATABASE\u NAME
值,但要注意,它会影响所有的SetSql实例,而不仅仅是接收到意图的实例
首先,最简单的选择是将
DATABASE\u NAME
设置为实例变量,如saveExtra
静态变量DATABASE\u NAME
在加载SetSql类后立即初始化,而实例变量saveExtra
仅在创建实例时初始化
您可以在SetSql类构造函数中设置DATABASE\u NAME
值,但要注意,它会影响所有的SetSql实例,而不仅仅是接收到意图的实例
首先,最简单的选择是将
数据库\u NAME
设置为实例变量,如saveExtra
删除此行String saveExtra=getIntent()。getStringExtra(“save”);
,并将其写入您的onCreate()
只需在活动级别声明变量saveExtra。删除此行
String saveExtra=getIntent().getStringExtra(“save”);
private static String saveExtra =null;
,并将其写入您的onCreate()
只需在活动级别声明变量saveExtra
private static String saveExtra =null;
在
用这个
saveExtra = getIntent().getStringExtra("save");
在
用这个
saveExtra = getIntent().getStringExtra("save");
试试这个
String saveExtra = null;
private static String DATABASE_NAME = "save" ;
立即创建
String saveExtra = getIntent().getStringExtra("save");
DATABASE_NAME += saveExtra;
试试这个
String saveExtra = null;
private static String DATABASE_NAME = "save" ;
立即创建
String saveExtra = getIntent().getStringExtra("save");
DATABASE_NAME += saveExtra;
我不确定我是否得到了它。。这两个变量都在DbHelper类之外设置。怎么了?哦,对不起,我误读了,你使用的是内部类。缩进有点错误;)我不确定我是否得到了它。。这两个变量都在DbHelper类之外设置。怎么了?哦,对不起,我误读了,你使用的是内部类。缩进有点错误;)您的意思是不是在activityoncreate方法之外声明它,而在它内部声明saveExtra?它实际上不工作:(Declare-No Problem,…line
getIntent().getStringExtra(“save”);
write-in-onCreate()你的意思是不在Activity-onCreate方法之外声明它,而是在它里面声明saveExtra吗?它实际上不工作:(Declare-No Problem,…linegetIntent().getStringExtra(“save”)
write-in-onCreate()您能解释一下在onCreate内外声明saveExtra变量的原因吗?我们能不能只使用saveExtra的同一个实例(已经在外部声明了)在onCreate方法内部。这是因为类的静态变量将在类中任何其他变量之前初始化。因此,使用其他非静态变量初始化静态变量是不可能的,因为只有在初始化静态变量之后才会初始化非静态变量。请参阅我们的SetSql活动被实例化了不止一次。您能解释一下在onCreate内外声明saveExtra变量的原因吗?难道我们不能只使用同一个saveExtra实例(已经在外部声明了)吗在onCreate方法内部。这是因为类的静态变量将在类中任何其他变量之前初始化。因此,使用其他非静态变量初始化静态变量是不可能的,因为只有在初始化静态变量之后才会初始化非静态变量。请参阅ur SetSql活动被多次实例化。