Android Intent具有显式处理程序和ID

时间:2011-08-30 14:49:49

标签: android android-intent listactivity

我有一个ListActivity,它应该调用一个编辑表单,就像在Notepad tutorial中一样。不同之处在于,我不想直接调用ACTION_EDIT意图,而是直接调用EditorActivity类,并向其发送ID。现在我只能弄清楚如何直接调用意图

startActivity(new Intent(Intent.ACTION_EDIT,ContentUris.withAppendedId(getIntent().getData(), id)));

或发送带有一般编辑请求的ID

startActivity(new Intent(getBaseContext(),LocationEditorActivity.class));

那么我现在如何将它们匹配在一起呢?

2 个答案:

答案 0 :(得分:3)

这样做......

startActivity(new Intent(Intent.ACTION_EDIT,ContentUris.withAppendedId(getIntent().getData(), id)));

...就像询问操作系统一样:“嘿,我希望你打开一个处理这种URI并支持Intent.ACTION_EDIT操作的活动。”

然后,选择的活动必须查看Uri内部并提取ID并处理它。因此,如果您想直接启动活动,则只需将ID显式发送到该活动:

Intent intent = new Intent(getBaseContext(),LocationEditorActivity.class);
intent.putExtra("the_id", id);
startActivity(intent);

然后,在活动中,不是在Uri数据中查找ID,而是从附加内容中获取它:

long theId = getIntent().getExtras().getLong("the_id", -1);

答案 1 :(得分:2)

? 尝试建立这样的意图:

Intent intent = new Intent(getApplicationContext(), LocationEditor.class);
intent.putExtra("Id", id);
startActivity(intent);

在接收活动中:

Intent intent = getIntent();
int id = intent.getExtras().getInt("Id");