当我尝试从另一个活动中获取数据时,应用程序返回上一页

Posted

技术标签:

【中文标题】当我尝试从另一个活动中获取数据时,应用程序返回上一页【英文标题】:The app back to previous page when I attempt to fetch data from another activity 【发布时间】:2021-11-16 14:31:30 【问题描述】:

我有 1 个适配器文件,包含以下代码:

//When user click detailBtn, it will pass the data to EventDetail page.
        holder.detailBtn.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                Intent intent = new Intent(holder.detailBtn.getContext(), EventDetail.class);
                intent.putExtra("eventName", datalist.get(position).getEventName());
                intent.putExtra("eventDate", datalist.get(position).getEventDate());
                intent.putExtra("eventVenue", datalist.get(position).getEventVenue());
                intent.putExtra("eventDesc", datalist.get(position).getEventDesc());
                intent.putExtra("eventRole", datalist.get(position).getEventRoles());
                intent.putExtra("eventCreator", datalist.get(position).getEventCreator());

                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                holder.detailBtn.getContext().startActivity(intent);

            
        );

主要问题出现在这里,导致问题的代码如下:

所以,当我尝试使用以下代码访问“eventRole”字段并将其放入 EventDetail java 文件中的 ArrayAdapter 时:

String[] roles = (String[]) getIntent().getStringArrayExtra("eventRole");
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.option_item, roles);

应用程序跳回上一页 :( 任何人都可以帮助我了解为什么当我尝试访问它时它会返回到以前的活动?我在它显示给我的 logcat 上找不到任何线索...

“eventRole”数组作为 Map Structure 存储在 Firestore 中。

【问题讨论】:

如果应用程序崩溃,会有一个堆栈跟踪。请在 logcat 上查找,并将其添加到您的问题中。 @AlexMamo 已添加。 请同时指出它出现在哪一行代码。 【参考方案1】:

您确定您的 getEventRoles() 方法返回 String[] 吗?据我了解,即使getStringArrayExtra() 正在返回 String[],您也已将 getIntent().getStringArrayExtra("eventRole"); 转换为 String[],为什么?

我认为问题出在您的 getEventRoles() 方法中,它可能没有返回 String[],而您正试图 将该不兼容的类型转换为抛出 ClassCastException 的 String[]。

【讨论】:

是的,我的 getEventRoles() 方法在我的 EventModel 中返​​回 String [],代码如下:public String[] getEventRoles() return eventRole; public void setEventRoles(String[] eventRole) this.eventRole = eventRole; public EventModel() public EventModel(String[] eventRole) this.eventRole = eventRole; 请显示EventDetail.java的第115行 String[] roles = getIntent().getStringArrayExtra("eventRole"); @RAHIL 这一行,我在主要问题中也提到了。 检查您的getIntent() 是否返回null

以上是关于当我尝试从另一个活动中获取数据时,应用程序返回上一页的主要内容,如果未能解决你的问题,请参考以下文章

无法从片段中的 SQLite 获取数据

当我们从另一个活动返回时如何刷新活动的数据?

从另一个活动返回后应用程序未恢复捆绑包

从另一个活动返回后如何恢复活动中最后打开的片段

当我尝试获取边界时,为啥 previewLayer 返回 nil?

如何从另一个活动中编辑和获取 editText 输入字段的更新?