[英]Can the same Android getIntent() receive from two different classes?
问题:当我尝试通过将数据从第二个活动传递给它来“重用”带有额外值的getIntent()
时,额外的值返回 null。 因此,我想将 NoteAdapter Intent Extras 传递给 ViewNote class,并且我还想使用相同的字符串键将 EditNote Intent Extras 传递给 ViewNote class。
像这样:用户选择注释 > 用户视图注释 > 用户编辑注释 > 用户视图注释已更正。
工作原理:根据用户对RecyclerView
笔记列表的选择,通过NoteAdapter
选择的笔记有额外的详细信息传递给ViewNote
class 的Intent
,而 ViewNote class 又具有Intent n = getIntent()
,这些额外信息被接收。 注释详细信息被加载到ViewNote
活动中。 如果用户决定需要更正或更新此注释,则ViewNote
class 有一个Intent
将额外内容传递给EditNote
class。 这一切都很好!
什么不起作用,我正在尝试做什么:我不确定这是否允许或可以完成,但我正在ViewNote
EditNote
相同的Intent Intent n = getIntent()
将注释传递给之前使用的ViewNote
class 中的Intent n = getIntent()
。
ViewNote class getIntent()
:
Intent n = getIntent();
nNoteID = n.getIntExtra("ID", 0);
String nType = n.getStringExtra("Type");
String nSummary = n.getStringExtra("Summary");
String nSource = n.getStringExtra("Source");
String nAuthors = n.getStringExtra("Authors");
EditNote Intent
将额外内容传递回 ViewNote
Intent u = new Intent(EditNote.this, ViewNote.class);
u.putExtra("ID", vNoteID);
u.putExtra("Type", ty);
u.putExtra("Summary", su);
u.putExtra("Source", so);
u.putExtra("Authors",au);
EditNote.this.startActivity(u);
我已经尝试过:我在 stackoverflow 上阅读了一些看起来相似的帖子,并尝试更改上下文(认为这可能是错误的),并尝试使用Bundle
,但这些都没有任何区别。 我想也许String
数组值没有通过,所以我只是传递了String
变量,因为作为String
的“ID”数字似乎可以通过,但其他值仍然返回null
。 我已经阅读了一些 Android 开发人员关于 Intent 的解释,也许我只是不完全理解 Intent,或者这只是无法完成或不应该如何完成。
我正在从事以下工作:
解决方案正是 David Wasser 在上面最初的评论中发布的。 我需要使用startActivityForResult
并遵循有关如何操作的指南。 我确实在线查看了 Android 开发链接和其他示例,但此视频有所帮助:
Android startActivityForResult 教程
这些是按顺序排列的代码段:
查看笔记
menuIntent = new Intent(this, EditNote.class);
menuIntent.putExtra("NoteID", nNoteID);
menuIntent.putExtra("NoteDetails", new ArrayList<>(noteDetails));
if(noteFiles.size() > 0)
menuIntent.putParcelableArrayListExtra("NoteFiles", new ArrayList<>(noteFiles));
startActivityForResult(menuIntent, REQUEST_CODE); // REQUEST_CODE = 1
编辑笔记
Intent u = new Intent();
u.putExtra("ID", vNoteID);
u.putExtra("Type", ty);
u.putExtra("Summary", su);
u.putExtra("Source", so);
u.putExtra("Authors",au);
setResult(RESULT_OK,u);
finish();
返回 ViewNote onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == REQUEST_CODE){
if(resultCode == RESULT_OK) {
nNoteID = data.getIntExtra("ID", 0);
nType = data.getStringExtra("Type");
nSummary = data.getStringExtra("Summary");
nSource = data.getStringExtra("Source");
nAuthors = data.getStringExtra("Authors");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.