我有两个类,一个叫做SQLiteExample,它有一个switch语句。在这个开关中是一个按钮单击监听器,我想将结果int读入TextView,这不起作用。我可以将int读入Toast消息并显示它没有错误。但是当我将它读入textview时,我不知道为什么当我这样做时它会在logcat中出错。 TextView已正确注册。
public class SQLiteExample extends Activity implements OnClickListener {
case R.id.bSQLnumberofrows:
PlayGame ec = new PlayGame(this);
ec.open();
int x = ec.fetchPlacesCount();
ec.close();
showNumbers.setText(x); // setText not working
// Toast message works perfectly and displays value of "x" on screen
Toast.makeText(SQLiteExample.this, "value of x " + x , Toast.LENGTH_SHORT).show();
break;
这是logcat错误:
01-25 10:52:04.540: E/AndroidRuntime(8449): FATAL EXCEPTION: main
01-25 10:52:04.540: E/AndroidRuntime(8449): android.content.res.Resources$NotFoundException: String resource ID #0x5
01-25 10:52:04.540: E/AndroidRuntime(8449): at android.content.res.Resources.getText(Resources.java:247)
01-25 10:52:04.540: E/AndroidRuntime(8449): at android.widget.TextView.setText(TextView.java:3473)
01-25 10:52:04.540: E/AndroidRuntime(8449): at com.example.dbsample.SQLiteExample.onClick(SQLiteExample.java:127)
第127行是异常的地方:showNumbers.setText(x);
,另一个类是PlayGame,有一个方法可以将SQLite数据库中的行数作为int:
public class PlayGame {
public int fetchPlacesCount() {
int count = 0;
Cursor q = ourDatabase.rawQuery("SELECT COUNT(*) from " + DATABASE_TABLE, null);
q.moveToFirst();
count = q.getInt(0);
return count;
}
答案 0 :(得分:3)
您正在调用setText()
的版本,该版本接受int
参数,该参数应该引用XML文件中的字符串资源。您需要将int
转换为String
才能在TextView中显示其值。请注意,使用Toast时,您使用"value of x " + x
隐式执行此操作。您可以通过调用int
将String
明确转换为String.valueOf(x)
。