1
をしようとしたときに部屋の永続性を使用する:項目に挿入するかを選択させるためのデータベースを取得しようとしたとき、エラーが表示され、部屋の永続性を使用した作業ヌルデータベースをアイテムを取得またはリターンを挿入するために
AppDataBase.getMovieDao(
AppDataBaseクラス:
を次のように)」ヌルオブジェクト参照にプロセスに関連
クラスであります
ダオクラス:
@Dao
public interface MovieDao {
@Insert
void insertAll(Movies movies);
@Update
void updateAll(Movies... notes);
@Query("SELECT * FROM moviestb")
List<Movies> getAll();
@Delete
void deleteAll(Movies... notes);
}
Entityクラス:登録の検索
@Entity(tableName = "moviestb")
public class Movies {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "idmovie")
private long id;
@ColumnInfo(name = "titlemovie")
private String titlemovie;
........
}
:
public void loadFromDB(){
db.getDataBase(view.getContext());
if(db.getMovieDao().getAll().size() > 0){
adapter.setResults(db.getMovieDao().getAll());
}else{
Toast.makeText(view.getContext(),"Não há filmes cadastrados",Toast.LENGTH_SHORT).show();
view.getActivity().finish();
}
}
インサート:
public View.OnClickListener onSaveClick(final String plot, final String diretor, final String autor,
final String nome, final String tipo, final String ano, final String ator, final String imdb) {
return new View.OnClickListener() {
@Override
public void onClick(View itemView) {
db.getDataBase(view.getContext());
Movies movies = new Movies(nome,plot,imdb,"",ator,ano,tipo,diretor,autor);
new InsertAsyncTask(db).execute(movies);
}
};
}
private class InsertAsyncTask extends AsyncTask<Movies,Void,Void>{
private AppDataBase db;
public InsertAsyncTask(AppDataBase appDataBase) {
db = appDataBase;
}
@Override
protected Void doInBackground(Movies... params) {
db.getMovieDao().insertAll(params[0]);
return null;
}
}
すべての検索
:データベースをフェッチしている間に
public void loadFromDB(){
db.getDataBase(view.getContext());
if(db.getMovieDao().getAll().size() > 0){
adapter.setResults(db.getMovieDao().getAll());
}else{
Toast.makeText(view.getContext(),"Não há filmes cadastrados",Toast.LENGTH_SHORT).show();
view.getActivity().finish();
}
}
クラッシュが発生し、私が間違って何をやっていますか?ありがとうございました!明らかに、null
である。
はい、私のdbはnullです。私は例えばloadfromdbの価値を得ています。 –
@HenriqueMendes:あなたの 'db.getDataBase(view.getContext());'コールはすべて役に立ちません。まず、 'db'は' null'なので、クラッシュするはずです。次に、そのメソッドを呼び出すポイントである戻り値を無視します。 – CommonsWare
はい!ありがとうございました! –