我是 android 领域的新手。我正在开发餐厅菜单应用程序,我创建了显示餐厅中项目名称的 ListView 。当我在 ListView 中选择任何一个项目时,它将启动另一个 Activity ,它包含显示所选项目详细描述的 TextView 字段。同样,当我选择其他项目时,它应该启动相同的 Activity ,但数据应该是所选项目的数据,如何实现这一点?如果我使用 sqlite 数据库作为数据源。
最佳答案
您需要传递 onItemClick 的值:
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivity(intent);
如果你想从被调用的 Activity 返回一些数据,那么你可以使用 startActivityForResult() 作为:
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(key, value);
startActivityForResult(intent, requestCode);
在调用的 Activity 中,您可以将数据设置为:
setResult(RESULT_OK, intent);
注意:这里是在intent中设置值,传递给setResult()。
返回调用 Activity 时,您可以通过覆盖获取数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
//Get data from Intent "data" and do your task here....
}
}
注意:您可以通过 Intent 传递原始数据类型值,如果您想传递其他类型,则必须像这样使用 Bundle。
Bundle data = new Bundle();
data.putIntArray(key, value);
//same way you can set other values.......
//Now set this Bundle value to Intent as you do for primitive type....
Intent intent = new Intent(context, CalledActivity.class);
intent.putExtra(data);
startActivity(intent);
在 Activity 中接收数据:
//For primitive values:
DataType var_name = getIntent().getExtras().get(key);
//For Bundle values:
Bundle var_name = getIntent().getExtras().getBundle(key);
关于android - 如何用不同的数据调用相同的 Activity (相同的布局)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7305113/