android - 如何传递带有意图的 int 数据?
问题描述
嗨,我正在做一个项目,我正在使用房间持久性来管理我的数据库,但是当我从我的活动中获取 id 并将其传递给另一个活动以编辑数据时,它会给出不兼容的类型
这是我的 DaoClass,我想调用 getOne 方法
@Insert
void insert(Entradas entradas);
@Update
void update(Entradas entradas);
@Delete
void delete(Entradas entradas);
@Query("DELETE FROM Entradas")
void deleteAll();
@Query("SELECT * FROM Entradas")
LiveData<List<Entradas>> getAll();
@Query("SELECT * FROM Entradas WHERE IdEntrada ==:Id")
LiveData<Entradas> getOne(int Id);
这是我的活动,当我使用方法 longClickListener 将我发送到另一个活动时
adapter.addActionCallback(new EntradasAdapter.ActionCallback() {
@Override
public void onLongClickListener(Entradas entradas) {
Intent intent = new Intent(getActivity(), UpdateEntradaActivity.class);
intent.putExtra(UpdateEntradaActivity.EXTRA_ENTRADA_ID, entradas.getIdEntrada());
startActivity(intent);
}
});
这是我要显示数据的活动
public static String EXTRA_ENTRADA_ID = "IdEntrada";
private Button btnCalendario, btnCrear;
private EditText etNombre, etSaldo;
private TextView etFecha;
Calendar c;
DatePickerDialog dpd;
private CategoriaEntradasViewModel viewModel;
private CuentasViewModel viewModel1;
private EntradasViewModel viewModel2;
Spinner spinner, spinner1;
List<CategoriaEntradas> categoriaEntradas1;
List<Cuentas> cuentas1;
private EntradasDao mEntradasDAO;
private Entradas ENTRADAS;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_entrada);
getSupportActionBar().setTitle(Html.fromHtml("<font color='#FFFFFF'>"+"Editar Entrada"+"</font>"));
getSupportActionBar().setElevation(0);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
mEntradasDAO = Room.databaseBuilder(this, Database.class, "Database")
.allowMainThreadQueries() //Allows room to do operation on main thread
.build()
.entradasDao();
final Context ctx = this;
etNombre= findViewById(R.id.editText);
etSaldo= findViewById(R.id.editText4);
etFecha = (TextView) findViewById(R.id.txtFecha);
btnCalendario= (Button) findViewById(R.id.btnFecha);
btnCrear = findViewById(R.id.btnCrear);
ENTRADAS = mEntradasDAO.getOne(getIntent().getStringExtra(EXTRA_ENTRADA_ID));
}
错误在最后一行ENTRADAS = mEntradasDAO.getOne(getIntent().getStringExtra(EXTRA_ENTRADA_ID));
它说getOne(int) in EntradasDao cannot be applied to java.lang.String
解决方案
您将输入为 Int,而在阅读时尝试获取为 String。代替
mEntradasDAO.getOne(getIntent().getStringExtra(EXTRA_ENTRADA_ID));
with
mEntradasDAO.getOne(getIntent().getIntExtra(EXTRA_ENTRADA_ID,0));
推荐阅读
- html - 如何仅垂直定位一个div?
- flutter - Pub 未能删除条目,因为它正被另一个进程使用。这可能是由病毒扫描程序或目录中的文件在
- android - 在 RecyclerView 上添加新数据
- python-3.x - 尝试从 piccolo_admin.endpoints import create_admin 导入模型时出现 piccolo_admin 空字节错误
- selenium - 如何使用 Selenium Webdriver 在 Salesforce applauncher 弹出窗口中查找元素?
- swift - XCode & Apollo:“找不到具有指定主机名的服务器。”
- c++ - 在 C++ 中包含头文件的特定部分
- amazon-web-services - 将 Kinesis 流数据直接插入或更新到 Dynamodb 中,无需 lambda
- r - 数据框中几个固定列的相关性检验
- laravel - 将纤细的组件注入现有的应用程序?