Java 房间数据库实例无法解析DAO方法的符号

Java 房间数据库实例无法解析DAO方法的符号,java,android,android-room,Java,Android,Android Room,尝试使用文件室库处理数据库时,Android Studio无法解析MainActivity中itemDao()方法的符号: db.itemDao().insert(item); MainActivity.java public class MainActivity extends AppCompatActivity { Button btn; EditText et; TextView tv; RoomDatabase db; @Override

尝试使用文件室库处理数据库时,Android Studio无法解析MainActivity中itemDao()方法的符号:

db.itemDao().insert(item);

MainActivity.java

public class MainActivity extends AppCompatActivity {

    Button btn;
    EditText et;
    TextView tv;
    RoomDatabase db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = findViewById(R.id.button);
        et = findViewById(R.id.editText);
        tv = findViewById(R.id.textView);

        db = MyDatabase.getInstance(this);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Item item = new Item();
                item.info = et.getText().toString();
                tv.setText(item.info);
                db.itemDao().insert(item);
            }
        });
    }
}
Item.java

@Entity(tableName = "tableItems")
public class Item {
    @PrimaryKey(autoGenerate = true)
    public int uid;

    @ColumnInfo(name = "info")
    public String info;
}
java

@Dao
public interface ItemDao {
    @Query("SELECT * FROM tableItems")
    List<Item> getItemsList();

    @Insert
    void insert(Item item);

    @Delete
    void delete(Item item);
}

您的
db
属于
RoomDatabase
类型
RoomDatabase
没有
itemDao()
方法,您的
MyDatabase
扩展了它。因此,如果您希望能够访问
itemDao()

@Database(entities = {Item.class}, version = 1)
public abstract class MyDatabase extends RoomDatabase {

    public abstract ItemDao itemDao();
    private static MyDatabase INSTANCE;
    private static final String DATABASE_NAME = "MyDatabase";

    public synchronized static MyDatabase getInstance(Context context) {
        if (INSTANCE == null) {
            INSTANCE = Room.databaseBuilder(context.getApplicationContext(), MyDatabase.class, DATABASE_NAME)
                    .allowMainThreadQueries()
                    .build();
        }
        return INSTANCE;
    }
}