Мог сделать что-то вроде этого:
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));
}
}
Чтобы зафиксировать действия, выполняемые в одном действии в другом, требуется три шага.
Запустите вторичное действие (действие «Редактировать текст») в качестве вспомогательного действия, используя 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;
}
}
}
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"