当前位置: 首页 > 知识库问答 >
问题:

如何将返回活动中的数据传递到前一个活动中的对话框?

柴宏阔
2023-03-14

访客详细信息

我在访问者活动中有一个对话框。当我点击图标,它将重定向到相机活动。然后点击Camera Activity中的Confirm按钮,将意图发送回前一个活动,即访客活动。问题是我应该如何将Camera活动的意图结果传递回Visitor活动中的对话框。意图数据应该放在Pass No Edit文本中。我使用的是材料对话框,没有任何附加到该对话框的片段。这一切都放在访客活动中。谁能帮帮我吗?谢谢!

private void checkin()
{
    final MaterialDialog dialog = new MaterialDialog.Builder(VisitorDetailActivity.this)
            .customView(R.layout.sample,false)
            .build();

    View view = dialog.getCustomView();
    final EditText etPassNo = (EditText) view.findViewById(R.id.etPassNo);
    final EditText etVehicleNo = (EditText) view.findViewById(R.id.etVehicleNo);
    final ImageView ivScanCode = (ImageView) view.findViewById(R.id.ivScanCode);
    final TextView tvCancel = (TextView) view.findViewById(R.id.tvCancel);
    final TextView tvSubmit = (TextView) view.findViewById(R.id.tvSubmit);

    etVehicleNo.setText(model.getFldVehicleNo());

    if(barCode != null)
    {
        etPassNo.setText(barCode);
    }

    ivScanCode.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            //Toast.makeText(VisitorDetailActivity.this, "Bar code scanner", Toast.LENGTH_SHORT).show();
            Intent i = new Intent(VisitorDetailActivity.this, ScanCodeActivity.class);
            startActivityForResult(i,97);
        }
    });

    tvCancel.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            dialog.dismiss();
        }
    });

    tvSubmit.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            if(etPassNo.getText().toString().trim().isEmpty())
            {
                Toast.makeText(VisitorDetailActivity.this, "Pass No is required", Toast.LENGTH_SHORT).show();
                return;
            }
            if(selImage == null)
            {
                proceedCheckin(etPassNo.getText().toString(), etVehicleNo.getText().toString());
            }
            else
            {
                proceedCheckinImage(etPassNo.getText().toString(), etVehicleNo.getText().toString());
            }
        }
    });

    dialog.show();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == 98 && resultCode == RESULT_OK)
    {
        selImage = data.getStringExtra("photo");

        Glide.with(VisitorDetailActivity.this).load(selImage).into(iDrivingLicense);

    }
    else if (requestCode == 99 && resultCode == RESULT_OK)
    {
        selImage = data.getStringExtra("photo");

        Glide.with(VisitorDetailActivity.this).load(selImage).into(iDrivingLicense);
    }
    else if(requestCode == 97 && resultCode == RESULT_OK)
    {
        barCode = data.getStringExtra("barCode");
    }
}

共有1个答案

殳阳飙
2023-03-14

首先,您需要将视图对象从检入方法中全局地取出

View view;
view = dialog.getCustomView();
final EditText etPassNo = (EditText) view.findViewById(R.id.etPassNo);

现在,在onActivityResult方法下,我可以看到您已经获得了条形码,所以只需在该方法上再次启动EditText对象,只需设置其中的数据。

barCode = data.getStringExtra("barCode");
EditText etPassNo = (EditText) view.findViewById(R.id.etPassNo); 
etPassNo.setText(barCode);

如果有用就告诉我。

 类似资料: