在我的Android应用程序中,我创建了一个游戏。每次会话后,每个游戏会话的详细信息都会写入SQLite数据库。
此数据库中的一个字段是username.
用户名是从用户在应用程序登录屏幕中输入的名称中获取的。
我遇到的问题是:第一次玩游戏时,userName才被正确输入数据库。
即。如果我完成游戏会话并再次开始游戏以播放另一个游戏,则会将其填充为Null
。 为什么是这个?
用户名输入SQLite数据库,例如:
SignInActivity.getUserName()
即:
// Adding the new Session to the database
db.addSession(new Session(sessionID, "Multiplication", SignInActivity
.getUserName(), averageMedLevel, medMax, averageAttLevel,
attMax, score, date, "false",fileNameRaw,fileNameEEGPower,fileNameMeditation,fileNameAttention));
来自登录活动的用户名功能
public class SignInActivity extends Activity {
private static String userName;
//within on create
String userName=editTextUserName.getText().toString();
}
//Getter for userName
//Gets userName
public static String getUserName() {
return userName;
}
是因为我在用吗? :
String userName=editTextUserName.getText().toString();
而不是:
userName=editTextUserName.getText().toString(); //i.e. the static one
答案 0 :(得分:0)
行String userName=editTextUserName.getText().toString();
只需创建新字符串对象并将您的用户名放在那里。您的静态字段private static String userName;
仍为空。
您应该使用此代码
SignInActivity.userName = editTextUserName.getText().toString();
答案 1 :(得分:0)
如果该行:
String userName=editTextUserName.getText().toString();
出现在onCreate方法中,因为您的注释表明这是一个仅存在于onCreate上下文中的局部变量。当调用getUserName()时,它返回使用以下行创建的全局变量:
private static String userName;
从未为其分配过值。这里的关键错误是你创建了两个不同的变量并假设它们具有相同的值,因为它们具有相同的名称。