макет с фрагментом и макетом кадра, замененным другим фрагментом и макетом кадра

EDIT:

Итак, после комментариев ниже я пересмотрел и понял, что меня подвешивает.

Представьте себе, список моих клиентов и сведения о клиентах можно начать с:

public class ClientsMainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //StudioTabOpenHelper db;
        setContentView(R.layout.main_client_activity);
    }
}

Итак, это отлично работает, запускает мою main_client_Activity (определенную в макете ниже, и я вызываю это действие при нажатии кнопки на моем основном экране):

Intent intent = new Intent(getActivity(), ClientsMainActivity.class);
startActivity(intent);

Легко проблема в том, что ClientsMainActivity не вызывает OnCreateView или что-то еще, а просто устанавливает макет на макет, который определяет мой фрагмент и мой ListFragment. Это нормально, потому что я не пытаюсь передать что-либо в ClientsMainActivity , но если у меня есть гипотетическая активность вроде:

SessionMainsActivity , которая вызывается, когда они нажимают на редактирование сеанса клиента , то я бы не стал называть SessionsMainActivity таким же образом (запускает действие, которое просто устанавливается на alayout), я бы хотел, чтобы этот макет был установлен, поскольку он определяет, как мои фрагменты разделяются. Но я также хотел бы передать данные в это, а затем в последующие фрагменты (например, какой сеанс они щелкнули для редактирования / удаления.

Так что мне интересно, имеет ли смысл вышесказанное, я уверен, что это простая вещь Я просто не могу осмыслить. У меня нет проблем с вызовом FragmentActivitie s из других фрагментов, они занимают весь экран, но работает. Так что, я думаю, большая проблема в том, что ClientsMainActivity взят из некоторого примера, который я нашел в Интернете для создания рецептов, которые показывают вам, как сделать несколько фрагментов на экране. Вещь, которая дает мне все, что делает FragmentActivity , устанавливает представление содержимого в макет, похоже, работает, поэтому я не могу понять, как бы я закодировал его, чтобы сделать то же самое, но позвольте мне передать значения фрагментам, которые определяет макет и т. д.

END EDIT

Итак, я использую это здесь:

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

Он проделал мне долгий путь, и, используя то, что они говорят, для основного действия и fragment_layout.xml, я получил хороший список клиентов слева (это фрагмент списка) и фрагмент деталей справа .

Затем я добавил возможность редактировать информацию о сеансе на клиенте (или редактировать детали клиента), оба из которых были полноэкранными фрагментами. Это отлично сработало.

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

Это не работает, как я думал, как я уже сказал, у меня есть main_Activity, который делает это в onCreate:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_client_activity);
}

, где main_client_activity.xml определен в двух макетах, кроме одного для альбомных планшетов. здесь:




   

   


Это все отлично работает! В этом случае я обрабатывал все остальное как полноэкранное действие, которое запускало свой собственный фрагмент:

EditSessionActivity EditClientActiivyt , оба из которых используют getSupportFragmentManager (). BeginTransaction, и я мог передавать ему информацию из вызова .newInstance .

У меня был макет session_edit.xml , определенный с кнопками, текстовыми представлениями и т. Д., И он отлично работал. Это то, что я загрузил в свой SessionEdit фрагмент, "запущенный" моим EditSessionActivity . Но теперь, когда я хочу разделить его на части, я столкнулся с загвоздкой. Выше я определил client_list и идентификатор client_details, есть ли эти заполнители на моем экране? мне ссылаться на них, когда я хочу заменить то, что там, на совершенно другие фрагменты?

или я создаю другой макет фрагмента, называемый чем-то вроде fragment_session_layout, который определяет что-то вроде:

    


   

   

Извините, не знаю, как назвать это в конце мой язык того, что я прошу, в основном, как дважды получить две панели фрагментов. В онлайн-демонстрации показано, как это сделать (и простой ListFragment).

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

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int clientID = getIntent().getIntExtra(THE_SELECTED_CLIENT, -1);            
    int sessionID = getIntent().getIntExtra(SELECTED_SESSION,-1);
    SessionEdit edits = SessionEdit.newInstance(this.getBaseContext(), false, clientID, sessionID);
    mUIListener = (OnUpdateUI)edits;
    getSupportFragmentManager().beginTransaction().add(android.R.id.content, edits).commit();
}

это сработало, но, чтобы попытаться придерживаться предыдущего примера фрагмента, я предположил, что мой EditSessionActivit был вроде как создание другого MainActivity (потому что в нем есть две панели вроде основной). поэтому я перекодировал onCreate в EditSessionActivity следующим образом:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);      
    setContentView(R.layout.edit_session_fullview);
}

Который после борьбы в моем фрагменте EditSession, имеющем отношение к onCreateView, я получил это, чтобы наконец заработать, но не смог передать data потому что нет экземпляра объекта, используя как предыдущий onCreate , который имел edits = SessionEdit.newInstance (...)

Так что это хорошая практика - делать другой фрагмент макет, в котором есть две проблемы, и запуск его, когда запускается правильное действие. Или нужно заменить два уже созданных фрагмента ?? из моего main_client_activity.xml каким-то образом?

5
задан JJD 6 March 2013 в 09:42
поделиться