“后退箭头”将数据发送给父级

时间:2019-12-03 14:51:37

标签: java android user-interface android-recyclerview

我正在尝试提出申请。在我的应用程序中,有一个包含图像的回收站,当您单击特定的项目时,它进入中间活动(该活动链接到加载图像(通过Picasso)并显示图像),然后您可以转到上一个活动, 做了什么”。 但是我的后退箭头有一个问题: enter image description here 上一个活动中间活动的子级,因此,当您单击箭头图标时,它会转到“中间活动”。但是中间活动应该用于获取图像数据(例如从回收站项目加载图像的链接)。因此,当单击 LastActivity 上的箭头时,它将转到 MiddleActivity ,但由于 没有图像的必要链接而无法正常工作。< / em>

这是我在回收站适配器中单击的ItemClickListener:

//IMPLEMENT CLICK LISTENER
        holder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(View v, int pos) {
                String getTitle = mMainList.get(pos).getKeyId();
                Toast.makeText(v.getContext(),getTitle,Toast.LENGTH_SHORT).show();
                //Go to the next Activity
                Intent show_more = new Intent(v.getContext(), MiddleActivity.class);
                show_more.putExtra("image_link", mMainList.get(pos).getImageLink());
                v.getContext().startActivity(show_more);
            }
        });

MiddleActivity的意图是转到LastActivity

Intent go_to_last = new Intent(MiddleActivity.this, LastActivity.class);
                        String image_link_push = getIntent().getStringExtra("image_link");
                        go_to_last.putExtra("image_link_push", image_link_push);//push link further
                        startActivity(go_to_last);

我的想法是我需要自定义 后退箭头并按意图发送图像链接。 过程将如下所示:

MainAct (通过意图发送图像链接)--- MiddleAct (获取链接并发送到下一个)--- LastAct (获取链接,在按下后退箭头时,将相同链接发送到中间)链接将在所有活动中被拖动

我试图通过onBackPressed方法(在 LastActivity 中)来实现它,但是它什么也没做:

image_link_back = getIntent().getStringExtra("image_link_push");

 @Override //!!
    public void onBackPressed()
    {
        Intent intent = new Intent(LastActivity.this, MiddleActivity.class);
        intent.putExtra("image_link_back", image_link_back);
        startActivity(intent);
        super.onBackPressed();
        finish();
    }

希望我已经正确解释了我的问题。

如何“自定义” 后退并解决问题?非常感谢您回答。

1 个答案:

答案 0 :(得分:1)

因为当用户单击箭头时,活动管理器关闭了当前活动并启动了父活动,因此将再次调用 onCreate

解决方案: 当用户单击箭头后退时,通过在 LastActivity

中插入此代码,无需再次启动parentActivity(MiddleActivity)即可完成当前活动(LastActivity)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            //listen to back arrow in app bar
            finish();
            return true;

        default:
            return super.onOptionsItemSelected(item);
    }
}