同一个 Android getIntent() 可以从两个不同的 类 接收吗?

Can the same Android getIntent() receive from two different classes?

问题: 当我尝试通过从第二个 activity 向其传递数据来“重用”所谓的具有额外值的 getIntent() 时,额外值 return 为空。所以我想将 NoteAdapter Intent Extras 传递给 ViewNote class 并且我还想使用相同的字符串键将 EditNote Intent Extras 传递给 ViewNote class。

是这样的:用户选择笔记 > 用户查看笔记 > 用户编辑笔记 > 用户查看笔记已更正。

什么有效: 根据用户对 RecyclerView 笔记列表的选择,通过 NoteAdapter 选择的笔记会将额外的详细信息传递给 IntentViewNote class反过来有一个 Intent n = getIntent() 接收这些额外内容。备注详情载入ViewNoteactivity。如果用户决定此注释需要更正或更新,则 ViewNote class 有一个 Intent 将附加信息传递给 EditNote class。这一切都很好!

什么不起作用以及我正在尝试做什么: 我不确定这是否被允许或可以完成,但我正在尝试将 extras 从 [=23= 传递回 ViewNote class ] class 在 ViewNote class 中使用相同的 Intent n = getIntent() ,当将注释传递给它时 class。

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);

我试过的: 我在这里阅读了一些关于 Whosebug 的帖子,它们看起来很相似,并尝试更改上下文(认为这可能是错误的),并尝试使用 Bundle 但这些都没有任何区别。我想也许 String 数组值没有传递,所以我只是传递了 String 变量,因为作为 String 的“ID”数字似乎可以正常传递,但其他值仍然 return null。我已经阅读了一些 Android 开发人员关于 Intents 的解释,也许我只是没有完全理解 Intents,或者这可能无法完成或不应该如何完成。

我从事以下工作:

解决方案正是 David Wasser 在上面的初始评论中发布的内容。我需要使用 startActivityForResult 并遵循有关如何操作的指南。我确实在网上查看了 Android 开发链接和其他示例,但这个视频很有帮助:

Android startActivityForResult Tutorial

这些是按顺序排列的代码段:

查看笔记

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");
        }
    }
}