Как разделить фрагменты на разные файлы в Android studio?

Я пытаюсь разработать приложение для android в Android studio, и я продолжаю писать все больше и больше фрагментов в классе mainActivity. Мой вопрос в том, как отделить их от другого файла? Возможно, я делаю это неправильно, и если да, то кто-нибудь может показать мне, как это сделать?

мой код:

public class MainActivity extends ActionBarActivity
    implements NavigationDrawerFragment.NavigationDrawerCallbacks {
.
.
.
public static class PlaceholderFragment1 extends Fragment {...}
public static class PlaceholderFragment2 extends Fragment {...}
public static class PlaceholderFragment3 extends Fragment {...}
}

3 ответов


поскольку они являются статические внутренние классы, AndroidStudio можете легко рефакторинг это для вас. Выберите PlaceholderFragment1 (просто поместите на него текстовый курсор) и нажмите F6 (или щелкните правой кнопкой мыши имя фрагмента->рефакторинг->переместить) и выберите "переместить внутренний класс [имя фрагмента] на верхний уровень", измените имя и пакет, если хотите, и нажмите рефакторинг.

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


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


сначала вам нужно создать новый класс (новый файл класса)

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

public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.article_view, container, false);
}
//logic here
}

тогда вы можете использовать его в своей MainActivity, которая расширяет FragmentActivity, как:

MyFragment fragment= new MyFragment();

или если существует

fragment= (MyFragment)getSupportFragmentManager().findFragmentByTag(FRAGMENT_TAG);

вы можете установить свои фрагменты для просмотра с:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            ft.replace(R.id.frameLayout, fragment, FRAGMENT_TAG);
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            ft.addToBackStack(null);
            ft.commit();