java - onActivityResult 未从适配器调用

标签 java android

每当我完成“ViewEvent” Activity 时,在“HomeFragment”中调用 onActivityResult() 时遇到问题。 ViewEvents Activity 从适配器启动。 Activity 启动得很好,但是 onActivityResult 不会在 home fragment 中被调用。我怎样才能让它发挥作用?

主页 fragment

    @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            // Do stuff
            EventListAdapter eventListAdapter = new EventListAdapter(getContext(), 0, events);
            eventListView.setAdapter(eventListAdapter);
}

Activity 列表

 private Context mContext;

public EventListAdapter(@NonNull Context context, int resource, @NonNull List<WorkdayEvent> objects) {
    super(context, resource, objects);
    mContext = context;
}

@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    setupImageLoader();
    LayoutInflater inflater = LayoutInflater.from(mContext);
    convertView = inflater.inflate(R.layout.event_list_layout,parent,false);
        convertView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Bundle bundle = new Bundle();
                bundle.putSerializable("EVENT",event);
                Intent intent = new Intent(mContext, ViewEvent.class);
                intent.putExtra("EVENTBUNDLE",bundle);
                Activity activity = (Activity)mContext;
                activity.startActivityForResult(intent,DELETE_EVENT);
        }
        });
    return convertView;
}

查看事件

        final Button deleteEvent = findViewById(R.id.buttonViewEventDelete);
        deleteEvent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                loadEvents();
                int index = getEventIndex(event);
                if(index > -1) {
                    workdayEvents.remove(index);
                }
                saveEvents();
                setResult(RESULT_OK);
                finish();
            }
        });

最佳答案

您正在使用Activity.startActivityForResult,在这种情况下结果不会传播到 fragment 。

将 fragment 传递给适配器并使用 Fragment.startActivityForResult 来调用 onActivityResult

关于java - onActivityResult 未从适配器调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59805884/

相关文章:

java - SQLite 异常 : no such table?

java - Selenium:actions.moveToElement.click 不起作用

Android:如何:使用 2.1 up 的多点触控功能实现图像拖动和缩放扩展 ImageView

android - Flutter如何打开SD卡目录选择文件?

java - 从 Synyx Hades 迁移到 Spring Data JPA

java - org.springframework.web.servlet.PageNotFound :1108

android - 找不到 Google Play Alpha|Beta 链接

javascript - 是否有 JavaScript/HTML5 代码可以将任何视频格式转换为 mp4 格式,然后上传到存储服务器以便在任何客户端上观看?

JavaFX 图表自动缩放错误的低数字

android - youtube影片无法在android webview中运作