我是android领域的新手。我正在开发餐厅菜单应用程序,我创建了列表视图,显示了餐厅的项目名称。当我在列表视图中选择任何一个项目时,它将启动另一个活动,它包含显示所选项目的详细描述的文本视图字段。同样,当我选择其他项目时,它应该启动相同的活动,但数据应该是所选项目,如何实现这一目标?如果我使用sqlite数据库作为数据源。
答案 0 :(得分:2)
您需要传递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);
在被叫活动中,您可以将数据设置为:
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);
在活动中接收数据:
//For primitive values:
DataType var_name = getIntent().getExtras().get(key);
//For Bundle values:
Bundle var_name = getIntent().getExtras().getBundle(key);
答案 1 :(得分:0)
使用intent extras来实现这一目标。 您可以使用intent.putExtra(“KEY”,VALUE)将数据传输到您的活动。 在接收活动中,您可以通过调用getIntent()获取额外内容.getExtras();它返回一个Bundle,其中包含你在调用活动中添加的额外内容。
答案 2 :(得分:0)
您需要使用Bundle
的附加内容 Intent
,例如
假设您有MenuListActivity
将菜单显示为列表,并使用MenuItemActivity
更详细地显示单个菜单项。
在MenuListActivity.onListItemClick()
中,您希望将点击的菜单项ID传递给MenuItemActivity
:
public void onListItemClick(ListView list, final View view, int position, long id) {
final Intent intent = new Intent(this, MenuItemActivity.class); // from -> to
intent.putExtra(MenuItemActivity.ITEM_ID, id); // extra arguments: the menu item ID
startActivity(intent);
}
在MenuItemActivity
中,您将有一个常量来识别菜单项(在上面使用):
public static final String ITEM_ID = "item_id";
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
long menuItemId = extras.getLong(ITEM_ID);
// fetch your menu item from database, using ID
答案 3 :(得分:0)
取决于您要实现的目标。假设您要发送列表视图项的位置,然后点击方法将id发送到具有意图的活动
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
//listView.getItemIdAtPosition(position);
// TODO Auto-generated method stub
Intent i=new Intent(MyActivity.this,NewActivity.class);
i.putExtras("position",""+position);
startActivity(i);
}
同样,如果你想发送数据,必须相应地工作