getText().toString() 不工作,returns 为空
getText().toString() not working, returns empty
我正在尝试保存 userName
,但保存的文本文件总是 returns , 6
。我怎样才能让它显示输入 EditText
的 userName 的任何值,以及其他值?例如 Don, 6
。我读过你必须使用 getText()
但这不会在保存的文件中返回任何内容。
但是,如果我将 6
替换为接收先前 activity 的得分的意图,这会奏效!像这样...
Bundle extras = getIntent().getExtras();
int score = extras.getInt("Score");
所以这变成了...
public void addListenerToEndButton() {
quit = (Button) findViewById(R.id.endBtn);
userName = (EditText) findViewById(R.id.userName);
Bundle extras = getIntent().getExtras();
int score = extras.getInt("score");
quit.setOnClickListener(new View.OnClickListener() {
String strName = userName.getText().toString();
@Override
public void onClick(View v) {
saveProgress(strName + ", " + score, "results.txt");
finish();
System.exit(0);
}
});
}
但它仍然 returns empty, whatever score is
。例如 , 4
.
我读过这个 post,建议它应该在 onClickListener 中,它是:
EditText getText().toString() not working
这是我的 saveProgress
class:
public void saveProgress(String contents, String fileName) {
try {
File fp = new File(this.getFilesDir(), fileName);
FileWriter out = new FileWriter(fp);
out.append(contents);
out.append("\n\r");
out.close();
}
catch (IOException e) {
Log.d("Me","file error:" + e);
}
}
使用以下内容更改您的 onClick()
方法:
public void addListenerToEndButton() {
quit = (Button) findViewById(R.id.endBtn);
userName = (EditText) findViewById(R.id.userName);
Bundle extras = getIntent().getExtras();
int score = extras.getInt("score");
quit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strName = userName.getText().toString();
saveProgress(strName + ", " + score, "results.txt");
finish();
System.exit(0);
}
});
}
调用、初始化、操作、exc 应该在侦听器的 onClick
方法中进行。 onClick
仅在单击按钮时触发,onClick
之外但 Listener
内的所有内容在 Listener
初始化时调用
我猜你理解 'inside onClickListener' 错了。你在做什么 atm 是在创建侦听器时读取 strName
,但我猜你想在单击 quit
时读取它。
所以只需将行移动到函数中,值就会正确。
public void addListenerToEndButton() {
quit = (Button) findViewById(R.id.endBtn);
userName = (EditText) findViewById(R.id.userName);
quit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strName = userName.getText().toString();
saveProgress(strName + ", " + 6, "results.txt");
finish();
System.exit(0);
}
});
}
我正在尝试保存 userName
,但保存的文本文件总是 returns , 6
。我怎样才能让它显示输入 EditText
的 userName 的任何值,以及其他值?例如 Don, 6
。我读过你必须使用 getText()
但这不会在保存的文件中返回任何内容。
但是,如果我将 6
替换为接收先前 activity 的得分的意图,这会奏效!像这样...
Bundle extras = getIntent().getExtras();
int score = extras.getInt("Score");
所以这变成了...
public void addListenerToEndButton() {
quit = (Button) findViewById(R.id.endBtn);
userName = (EditText) findViewById(R.id.userName);
Bundle extras = getIntent().getExtras();
int score = extras.getInt("score");
quit.setOnClickListener(new View.OnClickListener() {
String strName = userName.getText().toString();
@Override
public void onClick(View v) {
saveProgress(strName + ", " + score, "results.txt");
finish();
System.exit(0);
}
});
}
但它仍然 returns empty, whatever score is
。例如 , 4
.
我读过这个 post,建议它应该在 onClickListener 中,它是: EditText getText().toString() not working
这是我的 saveProgress
class:
public void saveProgress(String contents, String fileName) {
try {
File fp = new File(this.getFilesDir(), fileName);
FileWriter out = new FileWriter(fp);
out.append(contents);
out.append("\n\r");
out.close();
}
catch (IOException e) {
Log.d("Me","file error:" + e);
}
}
使用以下内容更改您的 onClick()
方法:
public void addListenerToEndButton() {
quit = (Button) findViewById(R.id.endBtn);
userName = (EditText) findViewById(R.id.userName);
Bundle extras = getIntent().getExtras();
int score = extras.getInt("score");
quit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strName = userName.getText().toString();
saveProgress(strName + ", " + score, "results.txt");
finish();
System.exit(0);
}
});
}
调用、初始化、操作、exc 应该在侦听器的 onClick
方法中进行。 onClick
仅在单击按钮时触发,onClick
之外但 Listener
内的所有内容在 Listener
初始化时调用
我猜你理解 'inside onClickListener' 错了。你在做什么 atm 是在创建侦听器时读取 strName
,但我猜你想在单击 quit
时读取它。
所以只需将行移动到函数中,值就会正确。
public void addListenerToEndButton() {
quit = (Button) findViewById(R.id.endBtn);
userName = (EditText) findViewById(R.id.userName);
quit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strName = userName.getText().toString();
saveProgress(strName + ", " + 6, "results.txt");
finish();
System.exit(0);
}
});
}