получение данных в мой фрагмент из моей деятельности

Я, наконец, понял после некоторых исследований, как заставить мой dialogfragment отправлять результаты в мою деятельность, теперь я хочу передать эти результаты фрагменту, который действительно вызывает этот фрагмент диалога (это средство выбора даты, поэтому я хочу обновить Дата).

Я видел это здесь: Вызов событий фрагмента из активности

Вышеизложенное дало мне некоторые идеи, но по какой-то причине мой макет фрагментов определен в XML и не имеет идентификатора, поэтому я не могу использовать вызов:

findFragmentById(R.id.fragmentBId);

Так что я либо неправильно определяю в xml свой макет (это мой фрагмент), либо есть другой способ сделать это.

В моем макете xml есть весь мой макет (все кнопки, текстовые представления, линейные макеты и т. д.). Хотя я ни разу ни разу не сказал <fragment .... />. Но я продолжил расследование и увидел на этой странице:

http://developer.android.com/guide/topics/fundamentals/fragments.html

Именно так предполагалось определить фрагмент. Итак, для полноты вот мой xml-файл, который теперь выдает ошибку Error: inflating class fragment в строке, где я определяю фрагмент.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <fragment android:name="com.viciousbytes.studiotab.subactivities.SessionEdit"
        android:id="@+id/session_fragment"
        android:layout_weight="1"
        android:layout_width="0dp"
        android:layout_height="match_parent">  
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">    
      <TextView         
            android:textSize="20sp"
            android:text = "Client Name:" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="left"/>         
    <TextView 
        android:id="@+id/client_name"
        android:gravity="center"
        android:textSize="20sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>       
</LinearLayout> 
    etc...
    etc...
    </fragment>
</LinearLayout>

Итак, что мне не хватает? или идентификатор, на который я ссылаюсь, должен указывать на другой xml, в котором есть весь этот пользовательский интерфейс? Я немного смущен тем, как он хочет, чтобы я это настроил. Он работал без тега фрагмента, но тогда у меня не было возможности позвонить:

SessionEdit session = (SessionEdit)getSupportFragmentManager().findFragmentById(R.id.session_fragment);

Я просто хочу, чтобы средство выбора даты в диалоговом окне отправляло информацию во фрагмент, вызвавший его.
Я видел демонстрацию средства выбора даты в диалоговом окне, но мне пришлось изменить его, чтобы использовать DialogFragment, и я, должно быть, пропустил "jist".


person Codejoy    schedule 18.07.2011    source источник


Ответы (1)


‹фрагмент› не является контейнером, у него не может быть дочерних элементов. Что вам нужно сделать, так это настроить представление содержимого вашего класса Fragment на то, что у вас есть здесь в качестве дочерних элементов тега ‹fragment›. Содержимое ‹фрагмента› должно находиться в отдельном XML-файле.

person cyngus    schedule 20.07.2011
comment
у меня не было части фрагмента, но тогда я не знал, как получить доступ к моему фрагменту, чтобы обновить его представления, когда дата была выбрана из диалогового фрагмента. так что без этого фрагмента у него не было идентификатора, за который можно было бы ухватиться... поэтому я понимаю, что это неправильно, но не знал, как это сделать. - person Codejoy; 20.07.2011
comment
Извините, не уверен, что понял ваш комментарий. Тег фрагмента должен существовать в макете XML, просто у него не должно быть дочерних элементов. Макет, который использует Фрагмент, должен быть в собственном файле XML. Activity сможет найти ViewById() в любом представлении в макете фрагмента, поскольку оно прикреплено к дереву представлений Activity. - person cyngus; 20.07.2011
comment
в основном думаю, что я запутался. У меня есть этот основной макет, в котором есть два фрагмента. Это настраивает мои макеты для моего главного экрана: фрагмент списка с одной стороны и обычный фрагмент с другой стороны (отображение сведений о клиенте)... затем мои другие фрагменты показывают полные экраны вещей, и я больше не определяю фрагменты ни в одном из них. макеты. Я просто использую макеты, определенные выше (без тегов фрагментов). Я хотел бы вставить блок-схему. ржу не могу - person Codejoy; 20.07.2011