Подтвердить что ты не робот

Как отправить строку из одной активности в другую?

Итак, у меня есть строка в activity2

String message = String.format(
"Current Location \n Longitude: %1$s \n Latitude: %2$s", lat, lng); 

Я хочу вставить эту строку в текстовое поле в activity1. Как я могу это сделать? Заранее благодарю вас.

4b9b3361

Ответ 1

Вы можете использовать намерения, которые представляют собой сообщения, отправленные между действиями. В намерении вы можете поместить все виды данных, String, int и т.д.

В вашем случае в activity2 перед тем, как перейти в activity1, вы сохраните сообщение String следующим образом:

Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", message);
startActivity(intent);

В activity1, в onCreate() вы можете получить сообщение String, извлекая Bundle (который содержит все сообщения, отправленные вызывающей активностью), и вызовите getString() на нем:

Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");

Затем вы можете установить текст в TextView:

TextView txtView = (TextView) findViewById(R.id.your_resource_textview);    
txtView.setText(message);

Надеюсь, это поможет!

Ответ 2

Вы можете отправлять данные из одной активности в другую с помощью Intent

Intent sendStuff = new Intent(this, TargetActivity.class);
sendStuff.putExtra(key, stringvalue);
startActivity(sendStuff);

Затем вы можете получить эту информацию во втором действии, получив намерение и извлекая лишнюю строку. Сделайте это в своем методе onCreate().

Intent startingIntent = getIntent();
String whatYouSent = startingIntent.getStringExtra(key, value);

Тогда все, что вам нужно сделать, это вызвать setText на TextView и использовать эту строку.

Ответ 3

Скажем, что EditText et1 в ur MainActivity и вы хотите передать это SecondActivity

String s=et1.getText().toString();
Bundle basket= new Bundle();
basket.putString("abc", s);
Intent a=new Intent(MainActivity.this,SecondActivity.class);
a.putExtras(basket);
startActivity(a);

теперь во второй активности, скажем, вы хотите, чтобы строка передавалась из EditText et1 в TextView txt1 из SecondActivity

Bundle gt=getIntent().getExtras();
str=gt.getString("abc");
txt1.setText(str);

Ответ 4

 Intent intent = new Intent(activity1.this, activity2.class);
 intent.putExtra("message", message);
 startActivity(intent);

В activity2 в onCreate() вы можете получить сообщение String, извлекая Bundle (который содержит все сообщения, отправленные вызывающей активностью), и вызовите getString() на нем:

  Bundle bundle = getIntent().getExtras();
  String message = bundle.getString("message");

Ответ 5

ДВЕ СЛУЧАЯ

Возможны две ситуации, когда мы говорим о передаче данных между действиями.

Допустим, есть два действия A и B, и есть строка X. и вы находитесь в действии A.

Теперь два случая

1) A-> B
2) A <-B

Случай 1): строка X находится в A, и вы хотите получить ее в действии B.

Это очень просто.

В Деятельности А.

1) Создать намерение
2) Положите дополнительные значения
3) startActivity

Intent i = new Intent(A.this, B.class);
i.putExtra("Your_KEY",X);
startActivity(i)

В Деятельности B

Внутри метода onCreate получить строку X, используя ключ, который вы использовали при сохранении X (Your_KEY).

Intent i = getIntent();
String s = i.getStringExtra("Your_KEY");

Дело 2)
Этот случай немного сложнее, если вы новичок в разработке Android.
Поскольку вы находитесь в действии A, вы переходите к действию B, собираете строку, возвращаетесь к действию A и извлекаете собранную строку или данные. Давайте посмотрим, как бороться с этой ситуацией.

В Деятельности А
1) Создать намерение
2) начать деятельность с кодом запроса.

Intent i = new Intent(A.this, B.class);
startActivityForResult(i,your_req_code);

В Деятельности B
1) Поместите строку X в намерение
2) Установить результат
3) Завершить деятельность

Intent returnIntent = new Intent();
returnIntent .putString("KEY",X);
setResult(resCode,returnIntent);   // for the first argument, you could set Activity.RESULT_OK or your custom rescode too
finish();

Снова в упражнении А
1) Переопределить метод onActivityResult

onActicvityResult(int req_code, int res_code, Intent data)
{
       if(req_code==your_req_code)
       {
          String X = data.getStringExtra("KEY")
       }
}

Дальнейшее понимание дела 2

Вы можете спросить, что такое reqCode, resCode в onActicvityResult(int reqCode, resCode, Intent data)

reqCode полезен, когда вам нужно определить, от какой деятельности вы получаете результат.

Допустим, у вас есть две кнопки, одна кнопка запускает камеру (вы щелкаете фотографию и в результате получаете растровое изображение этого изображения в вашей активности), другая кнопка запускает GoogleMap (в результате вы получаете текущие координаты вашего местоположения). Таким образом, чтобы различать результаты обеих операций, вы запускаете CameraActivty и MapActivity с разными кодами запросов.

resCode: полезно, когда нужно различать, как результаты возвращаются к запрашиваемой активности.

Например: вы запускаете Camera Activity. Когда начинается действие камеры, вы можете сделать снимок или просто вернуться к запросу активности, не делая снимок, нажав кнопку "Назад". Таким образом, в этих двух ситуациях ваша камера отправляет результат с разными resCode ACTIVITY.RESULT_OK и ACTIVITY.RESULT_CANCEL соответственно.

Соответствующие ссылки

Подробнее о получении результата

Ответ 6

Усилия интенсивно.

Намерения полезны для передачи данных вокруг рамки Android. Вы можете общаться со своими собственными Activities и даже другими процессами. Проверьте руководство разработчика и, если у вас есть конкретные вопросы (это много для переваривания), вернитесь.

Ответ 7

Вы можете использовать GNLauncher, который является частью библиотеки утилиты, которую я написал в тех случаях, когда требуется много взаимодействия с Activity. В библиотеке это почти так же просто, как вызов функции объекта Activity с требуемыми параметрами. https://github.com/noxiouswinter/gnlib_android/wiki#gnlauncher

Ответ 8

Чтобы вставить текст из Activity2 в Activity1, сначала необходимо создать функцию visit в Activity2.

public void visitactivity1()
{
    Intent i = new Intent(this, activity1.class);
    i.putExtra("key", message);
    startActivity(i);
}

После создания этой функции вы должны вызвать ее из своей функции onCreate() Activity2:

visitactivity1();

Затем перейдите к файлу Java активности. В своей функции onCreate() создайте объект Bundle, выберите предыдущее сообщение через свой ключ через этот объект и сохраните его в строке.

    Bundle b = getIntent().getExtras();
    String message = b.getString("key", ""); // the blank String in the second parameter is the default value of this variable. In case the value from previous activity fails to be obtained, the app won't crash: instead, it'll go with the default value of an empty string

Теперь поместите этот элемент в TextView или EditText или любой элемент макета, который вы предпочитаете использовать функцию setText().