Короче говоря,
В фрагменте объявите Fragment fragment = this
;
после этого используйте fragment.startActivityForResult
.
Результат вернется в activityResult.
Это, кажется, корректно для Ваших вложенных тегов Foo:
<NewDataSet>
<Foo> <!-- Foo-Id: 0 -->
<Bar>abcd</Bar>
<Foo>efg</Foo> <!-- Foo-Id: 1, Parent-Id: 0 -->
</Foo>
<Foo> <!-- Foo-Id: 2 -->
<Bar>hijk</Bar>
<Foo>lmn</Foo> <!-- Foo-Id: 3, Parent-Id: 2 -->
</Foo>
</NewDataSet>
Таким образом, это правильно становится 4 записями в Вашем результате с родительско-дочерним ключом "Foo-Id-0"
Попытка:
<NewDataSet>
<Rec> <!-- Rec-Id: 0 -->
<Bar>abcd</Bar>
<Foo>efg</Foo>
</Rec>
<Rec> <!-- Rec-Id: 1 -->
<Bar>hijk</Bar>
<Foo>lmn</Foo>
</Rec>
</NewDataSet>
Который должен привести к:
Bar Foo Rec-Id
abcd efg 0
hijk lmn 1
Это мои наблюдения, а не полный ответ:
Мое предположение (не пытаясь воспроизвести его самостоятельно) - то, что несколько вещей могут происходить, поскольку DataSet пытается 'сгладить' иерархическую структуру к реляционной структуре данных.
1) взгляды о данных из перспективы реляционной базы данных; нет никакого очевидного поля первичного ключа для идентификации каждого из элементов Foo в наборе, таким образом, DataSet автоматически использовал порядковое положение в файле как автоматически сгенерированное поле под названием идентификатор нечто.
2) Существует на самом деле два элемента по имени 'Foo' так, чтобы, вероятно, объяснил поколение странного названия столбца 'Foo-Id-0' (это автоматически сгенерировало уникальное имя для столбца - я предполагаю, что Вы могли думать об этом как об отказоустойчивом поведении в DataSet).