我无法将第一个活动(MapActivity)的数据发送到第二个活动(NewContact)

时间:2018-06-13 12:40:42

标签: java android android-activity onactivityresult

问题是我无法将活动2中的数据发送到活动1。 以下是活动1(NewContact.java)的快照

click here to see snapshot of first activity

在第一个活动中(NewContact)在底部我有一个TextView,我在TextView上实现了一个OnClickListener。当用户单击此TextView时,将打开第二个活动(MapActivity)。

click here to see snapshot of second activity

用户需要搜索地址,在底部会出现一个循环复选按钮,如果用户点击该按钮,则会出现一个警告对话框,要求添加该位置。 如果用户单击ADD,则相同的位置将保存到FirstConctivity的TextView,即NewContact。

activity_new_contact.xml

这是TextView的ID

android:id="@+id/etUserAddress"

NewContact.java

TvAddress = (TextView)findViewById(R.id.etUserAddress);

   Intent intent = getIntent();
   String addText = intent.getStringExtra(MapActivity.EXTRA_TEXT);
   TvAddress.setText(addText);

TvAddress.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v)
        {
            Intent intent = new Intent(NewContact.this, MapActivity.class);
            startActivityForResult(intent,1);
        }
    });

我还在第一个活动(NewContact)中的onActivityResult中实现了requestCode,该活动位于此函数的底部:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (requestCode == REQUEST_CODE_GALLERY && resultCode == RESULT_OK)
    {
        Uri imageUri = data.getData();
        CropImage.activity(imageUri)
                .setGuidelines(CropImageView.Guidelines.ON)
                .setAspectRatio(1, 1)
                .start(this);
    }

    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
    {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK)
        {
            Uri resultUri = result.getUri();
            mImageView.setImageURI(resultUri);
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE)
        {
            Exception error = result.getError();
        }
    }
    super.onActivityResult(requestCode, resultCode, data);

         //this requestCode is to send the data from one activity to other
    if (requestCode == 1)
    {
        if (resultCode == RESULT_OK)
        {
            String myStr = data.getStringExtra("EXTRA_TEXT");
            TvAddress.setText(myStr);
        }
    }

}

MapActivity.java

在第二个活动中,我还创建了一个公共静态字符串:

public static final String EXTRA_TEXT = 
"com.example.sahil.phonebook.EXTRA_TEXT";

下面是第二个活动的代码,当用户选择一个位置时,将显示一个警告对话框,要求用户添加或取消。 如果用户单击ADD按钮,则执行函数sendDataBack();

MapActivity.java

  sendAddress.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            AlertDialog.Builder a_builder = new AlertDialog.Builder(MapActivity.this);
            a_builder.setMessage("Add Location?").setCancelable(false).setPositiveButton("Add", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which)
                { //if user clicks on yes button then this will implement

                    sendDataBack();

                }
            })
                    .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });

            AlertDialog alertDialog = a_builder.create();
            alertDialog.setTitle("Confirm Location");
            alertDialog.show();

        }
    });

以下是函数sendDataBack();

的代码
  public void sendDataBack()
 {
  String addText = mSearchText.getText().toString();

  Intent intent = new Intent(MapActivity.this, NewContact.class);
  intent.putExtra(EXTRA_TEXT, addText);

 setResult(1,intent);
  }

1 个答案:

答案 0 :(得分:-1)

你需要通过意图将任何变量传递给你。

public void sendDataBack()
{
  String addText = mSearchText.getText().toString();

  Intent intent = new Intent(MapActivity.this, NewContact.class);
  intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
  intent.putExtra("textValue", addText);
  startActivity(intent);

 }

访问下一个NewContact活动的意图。

String addText  = getIntent().getStringExtra("textValue");