Search code examples
javaandroidonactivityresultmaterial-dialog

How to pass data from return activity to dialog in previous activity?


Visitor Details

I have a dialog in Visitor Activity. When I click on the icon, it will redirect to Camera Activity. Then when click Confirm button in Camera Activity, it will send the intent back to previous Activity which is Visitor Activity. The problem is how should I pass the intent result from Camera Activity back to the dialog in Visitor Activity. The intent data should be placed in the Pass No Edit Text. I'm using material dialog without any Fragment that attached to that dialog. It all placed in Visitor Activity. Can someone please help me? Thank you!

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

enter image description here


Solution

  • First you need to take the view object globally out of that checkIn methoed

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

    Now under your onActivityResult method, as i can see you already getting the barcode there, so just initiate the EditText object again on that same simply set the data in it.

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

    Let me know if that works.