Я не могу отправить данные из первого действия (MapActivity) во второе действие (NewContact) - PullRequest
0 голосов
/ 13 июня 2018

Проблема в том, что я не могу отправить данные из операции 2 в операцию 1. Вот снимок для операции 1 (NewContact.java)

click here to see snapshot of first activity

В первом действии (NewContact) Внизу у меня есть TextView, я реализовал OnClickListener для этого TextView.Когда пользователь нажимает на это TextView, открывается второе действие (MapActivity).

click here to see snapshot of second activity

Пользователь должен найти адрес и внизуПоявится круговая кнопка проверки, если пользователь нажимает на эту кнопку, появляется диалоговое окно с предупреждением, в котором будет предложено добавить местоположение или нет.Если пользователь нажимает на ADD, то же местоположение будет сохранено в TextView of FirstActivity, который является NewContact.

activity_new_contact.xml

Это идентификатор для TextView

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

Я также реализовал requestCode в onActivityResult в первом действии (NewContact), которое находится внизу в этой функции:

@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";

Ниже приведен код для второго занятия, когда пользователь выбирает местоположение, затем отображается диалоговое окно с запросом пользователя.ДОБАВИТЬ или ОТМЕНИТЬ.Если пользователь нажимает кнопку «ДОБАВИТЬ», то функция 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 голосов
/ 13 июня 2018

вам нужно передать значение в любую переменную, как показано ниже, с намерением.

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