Java 组合字符串未附加到值
有人知道为什么我的字符串没有附加到值上吗Java 组合字符串未附加到值,java,android,database,string,null,Java,Android,Database,String,Null,有人知道为什么我的字符串没有附加到值上吗 public void setNames() { //*******************// //***DATABASE INFO***// //*******************// DBAdapter db = new DBAdapter(this); if (totalPlayerCount >= 1){ //**********************// //**
public void setNames() {
//*******************//
//***DATABASE INFO***//
//*******************//
DBAdapter db = new DBAdapter(this);
if (totalPlayerCount >= 1){
//**********************//
//***SET PLAYER NAMES***//
//**********************//
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle("Player " + nameLoop);
alert.setMessage("Name:");
// Set an EditText view to get user input
final EditText input = new EditText(this);
alert.setView(input);
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String newName = "name"+nameLoop;
// If i put "name1" here like so, the value "wow" stays with "name1" all the way to the database and does not end up null
name1 = "wow";
newName = input.getText().toString(); <-- newName should be name1, name2, name3, name4 each time around. If i do a simple Toast, it displays name1, name2, etc. But when i insert those values into the database, they are all null.
setNames();
}
});
alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
}
});
alert.show();
nameLoop++;
}
if (totalPlayerCount == 0){
db.open();
db.insertPlayers(String.valueOf(name1), String.valueOf(name2), String.valueOf(name3),
String.valueOf(name4));
db.close();
AlertDialog.Builder myAlertDialog = new AlertDialog.Builder(this);
//myAlertDialog.setTitle("Saved");
myAlertDialog.setMessage("Names saved");
myAlertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
} });
myAlertDialog.show();
}
totalPlayerCount--;
return;
}
public void setNames(){
//*******************//
//***数据库信息***//
//*******************//
DBAdapter db=新的DBAdapter(此);
如果(totalPlayerCount>=1){
//**********************//
//***设置玩家名称***//
//**********************//
AlertDialog.Builder alert=新建AlertDialog.Builder(此);
alert.setTitle(“玩家”+nameLoop);
alert.setMessage(“名称:”);
//设置EditText视图以获取用户输入
最终编辑文本输入=新编辑文本(本);
alert.setView(输入);
alert.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
public void onClick(对话框接口对话框,int whichButton){
字符串newName=“name”+nameLoop;
//如果我像这样将“name1”放在这里,那么值“wow”将与“name1”一起一直保留到数据库,并且不会以null结束
name1=“哇”;
newName=input.getText().toString();短版本alert.show()不会阻塞,因此在通过onClick返回name1值赋值之前,您正在执行数据库插入
在长版本中,请后退几步,学习一些Java语法以及基于事件的编程是如何工作的。今天就是这样。您渴望工作是件好事,但我建议您在开始全速运行之前,先关注一些基础知识。有了良好的理解,您将能够更快地编写代码压力更小,弯路更少。一盎司的预防抵得上一磅的治疗
你不能动态地创建一个变量然后给它赋值。Java不像javascript那样工作
你必须换新衣服
String newName = "name"+nameLoop;
// If i put "name1" here like so, the value "wow" stays with "name1" all the way to the database and does not end up null
name1 = "wow";
newName = input.getText().toString(); <-- newName should be name1, name2, name3, name4 each time around. If i do a simple Toast, it displays name1, name2, etc. But when i insert those values into the database, they are all null.
调用insertPlayers(…)调用String时,valueOf(String)只会产生开销,没有完成任何有用的工作。name1声明在哪里?name1-4在类的最开始都声明为公共字符串。我想我可能看到了什么问题,但不确定如何解决。我设置了newName=“name”+nameLoop;成为name1,但紧接着,newName=input.getText().toString();这意味着newName不再是name1。我想我需要创建一个数组或其他东西??name[]或者类似的东西??不确定,但我需要每次都从name1更改为name2。我不知道你在哪里设置name2 name3等的值。如果你想将用户输入的每个名称插入数据库…只需声明一个字符串列表,将名称添加到列表中,然后迭代并插入数据库。。。
String newName = "name"+nameLoop;
// If i put "name1" here like so, the value "wow" stays with "name1" all the way to the database and does not end up null
name1 = "wow";
newName = input.getText().toString(); <-- newName should be name1, name2, name3, name4 each time around. If i do a simple Toast, it displays name1, name2, etc. But when i insert those values into the database, they are all null.
String newName = input.getText().toString();
switch(nameLoop){
case 1: name1=newName;break;
case 2: name2=newName;break;
....