2

2つのクラスがあります。1つはSQLiteExampleと呼ばれ、switchステートメントがあります。このスイッチには、結果のintをTextViewに読み込みたいボタンクリックリスナーがありますが、これは機能しません。intをToastメッセージに読み込んで、エラーなしで表示できます。ただし、テキストビューに読み込むと、これを行うと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);

もう1つのクラスは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;
    }
4

1 に答える 1

3

XMLファイル内の文字列リソースを参照することが期待されるパラメータをsetText()受け入れるバージョンを呼び出しています。TextViewに値を表示するには、intをに変換する必要があります。トーストを使用する場合は、これを暗黙的に実行していることに注意してください。を呼び出すことにより、を明示的にに変換できます。intString"value of x " + xintStringString.valueOf(x)

于 2013-01-25T02:12:21.440 に答える