2017-10-27 9 views
0

は、これは私がルーム持続性ライブラリを使用してデータベースにデータを挿入しています方法です:ルーム - ガットエラー挿入された行

@Entity(tableName = "users") 
public class ExpParent implements Parent<ExpChild>, Serializable { 
@Ignore 
private List<ExpChild> mChildrenList; 

@Embedded 
@SerializedName("UserInfo") 
private ExpChild childrenList; 

private String UserName; 
private String CreationDateTime; 
@PrimaryKey(autoGenerate = false) 
@NonNull 
private String Id =""; 
private String Topic; 
//...... 

データアクセスオブジェクト:

@Dao 
public interface UserDao { 

@Query("SELECT * FROM users") 
List<ExpParent> getAllUsers(); 

@Insert(onConflict = IGNORE) 
Long[] insertAllUsers(List<ExpParent> expParents); 
} 

が、私はの示す数値にしたいときオブジェクトをデータベースに挿入しました。このエラーが発生しました:

FATAL EXCEPTION: main 
              Process: com.example.sayres.a2_expandrecyandretrofit, PID: 2830 
              android.content.res.Resources$NotFoundException: String resource ID #0x8 
               at android.content.res.Resources.getText(Resources.java:312) 
               at android.widget.Toast.makeText(Toast.java:286) 
               at com.example.sayres.a2_expandrecyandretrofit.MainActivity$2$1$1.run(MainActivity.java:72) 
               at android.os.Handler.handleCallback(Handler.java:739) 
               at android.os.Handler.dispatchMessage(Handler.java:95) 
               at android.os.Looper.loop(Looper.java:148) 
               at android.app.ActivityThread.main(ActivityThread.java:5417) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

これは私のオブジェクトをデータベースに挿入する私の方法です:

  public void onResponse(Call<ServerResponse> call, Response<ServerResponse> response) { 
      ServerResponse body = response.body(); 
      final List<ExpParent> users = body.getUsers(); 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        final Long[] longs = db.userDao().insertAllUsers(users); 

        MainActivity.this.runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          Toast.makeText(MainActivity.this, longs.length, Toast.LENGTH_SHORT).show(); 
         } 
        }); 

       } 
      }).start(); 

私はリストとしての私のサービスからデータを取得し、その後、私は私のdb.finallyにこれらのデータを挿入したワーカースレッドに私は数行は私が得た私のdatabase.butに挿入方法を表示したい、改造によって午前エラー!!! 私の間違いは何ですか?

+0

'リソース$ NotFoundException' –

答えて

4

Toast.makeText()を誤って使用しています。
第2パラメータは、intリソースID(例:R.string.some_string)またはStringのいずれかです。
リソースIDではない整数(longs.length)を渡そうとしています。整数を表示するには、最初に文字列に変換する必要があります。あなたが例えばそれに空の文字列を追加することができることを行うには

Toast.makeText(MainActivity.this, longs.length + "", Toast.LENGTH_SHORT).show(); 
関連する問題