2012-01-11 2 views
2

Я знаю, что могу отправлять данные в другие виды деятельности, используя putExtra(). В этом случае цель приема должна управлять данными. Есть ли способ отправить данные другому намерению, и данные возвращаются, когда намерение заканчивается в onActivityResult()?Как вернуть данные по существу

Что я хочу сделать:

  1. поиск контакта с помощью пользовательского ввода в качестве имени

  2. , если ничего не найдено, начать контакт сборщика умысел

  3. при контакте сборщика возвращает контакт с пользователем выбрал, по-прежнему будет , способный знать начальный ввод, сделанный пользователем

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

Любые идеи?

ответ

1

Да, смотреть на startActivityForResult и onActivityResult, где вы передаете идентификатор для startActivityForResult, который идентифицирует отправителя, например:

intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(intent, 1); 
        break; 

Когда целевая цель была закончена система вызывает onActivityResult

public void onActivityResult(int requestCode, int resultCode,Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    // code 1 = take picture 
    if(requestCode==1 && resultCode==RESULT_OK) { 

здесь «1» от startAct .. передается как параметр requestCode, а результаты - в «данные». Фактическое отправление зависит от активности, которую вы вызываете.

E.g. в вашем собственном коде вы можете сделать следующее в вызываемом намерении, например, возвращает строку «Hello World» к абоненту («данные» ключ позже):

Intent intent = new Intent(); 
    intent.putExtra("data", "Hello World"); 
    setResult(RESULT_OK,intent); 

А затем получить его через data.get("data")

Для некоторых более примеров взглянуть на this class for the first part (строки 373+) и this one for an own intent that returns data.

+0

Это то, что я делаю, чтобы получить контакт, который выбрал пользователь ;-) Но нет никаких признаков того, что любые мои дополнительные данные будут возвращены. – Hokascha

+0

Спасибо за ваш ответ. «То, что действительно отправлено, зависит от вашей деятельности». Таким образом, несмотря на requestCode, который всегда является одним и тем же, я не могу отправлять и получать пользовательские данные, такие как ввод пользователя? – Hokascha

+0

Пользовательский ввод, который вы возвращаете из вызываемого намерения, - это «Hello World» в моем последнем примере –