我创建了一个用户所有收件箱电子邮件的列表视图。现在点击电子邮件ID。我想有一个活动,我显示邮件的内容。问题是我无法理解如何将邮件的ID传递给活动以获取带有详细信息的电子邮件。
public class InboxActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inbox);
DBAdapter db = new DBAdapter(InboxActivity.this);
db.open();
long userID = Long.parseLong(MessagingApplication.getUserID());
Cursor inbox = db.readInbox(userID);
startManagingCursor(inbox);
String[] mails = new String[] { DBAdapter.KEY_SUB };
int[] to = new int[] { R.id.subject };
SimpleCursorAdapter inboxmail = new SimpleCursorAdapter(this,
R.layout.inbox_list, inbox, mails, to);
setListAdapter(inboxmail);
db.close();
}
}
这是我的收件箱列表视图
答案 0 :(得分:1)
看看Android SDK Notebook example。 您会看到他们正在使用Intent 传递数据(您的案例中的数据是指向您邮件的URI)。
您可以使用以下代码构建mailUri(基于列表中的所选项目),通过传递包含操作的新意图来启动新活动(Intent.ACTION_VIEW)和数据(mailUri)。
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Uri mailUri = ContentUris.withAppendedId(getIntent().getData(), id);
startActivity(new Intent(Intent.ACTION_VIEW, mailUri));
}
使用Itents使您的代码更松散地耦合并促进重用(请注意您不指定需要启动的活动名称)。
检查Intent Filters上的Android基础知识,了解如何配置活动以对您的ACTION_VIEW mailUri采取行动。