Как передать значения от одного действия до предыдущего действия

Мог сделать что-то вроде этого:

public static class ForEachExtensions
{
    public static void ForEachWithIndex<T>(this IEnumerable<T> enumerable, Action<T, int> handler)
    {
        int idx = 0;
        foreach (T item in enumerable)
            handler(item, idx++);
    }
}

public class Example
{
    public static void Main()
    {
        string[] values = new[] { "foo", "bar", "baz" };

        values.ForEachWithIndex((item, idx) => Console.WriteLine("{0}: {1}", idx, item));
    }
}
94
задан Craigy 7 August 2012 в 13:49
поделиться

2 ответа

Чтобы зафиксировать действия, выполняемые в одном действии в другом, требуется три шага.

Запустите вторичное действие (действие «Редактировать текст») в качестве вспомогательного действия, используя startActivityForResult из вашего основного Activity.

Intent i = new Intent(this,TextEntryActivity.class);    
startActivityForResult(i, STATIC_INTEGER_VALUE);

В рамках вспомогательного действия, вместо того, чтобы просто закрывать Activity, когда пользователь нажимает кнопку, вам необходимо создать новое намерение и включить введенное текстовое значение в его дополнительный пакет. Чтобы передать его обратно родительскому вызову setResult перед вызовом , завершите , чтобы закрыть вторичное действие.

Intent resultIntent = new Intent();
resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, enteredTextValue);
setResult(Activity.RESULT_OK, resultIntent);
finish();

Последний шаг - в вызывающем действии: переопределить onActivityResult для прослушивания обратных вызовов из текстовой записи Activity. Получите дополнительную информацию от возвращенного Intent, чтобы получить текстовое значение, которое вы должны отображать.

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) {     
  super.onActivityResult(requestCode, resultCode, data); 
  switch(requestCode) { 
    case (STATIC_INTEGER_VALUE) : { 
      if (resultCode == Activity.RESULT_OK) { 
      String newText = data.getStringExtra(PUBLIC_STATIC_STRING_IDENTIFIER);
      // TODO Update your TextView.
      } 
      break; 
    } 
  } 
} 
231
ответ дан 24 November 2019 в 06:01
поделиться

startActivityForResult()

And here's a link from the SDK with more information:

http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen

and scroll down to the part titled "Returning a Result from a Screen"

4
ответ дан 24 November 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: