Возможно ли иметь фрагмент без активности?

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

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

От разработчиков Android :

Фрагмент представляет собой поведение или часть пользовательского интерфейса в Activity . Вы можете объединить несколько фрагментов в одном действии для создания многоуровневого пользовательского интерфейса и повторного использования фрагмента в нескольких действиях. Вы можете представить фрагмент как модульный раздел активности , который имеет свой жизненный цикл, получает свои собственные входные события и которые вы можете добавлять или удалять во время работы (вроде как «вспомогательная активность», которую вы можете Повторное использование в разных видах деятельности).

Надеюсь, это полезно для вас.

Ну, как люди указали, вы не можете, но вы всегда можете создать какую-то обертку фрагментов. Например, цели:

public class ActivityFragmentWrapper extends FragmentActivity { public static final String KEY_FRAGMENT_CLASS = "keyFragmentClass"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getExtras() != null) { String fragmentClass = (String) getIntent().getExtras().get(KEY_FRAGMENT_CLASS); try { Class<?> cls = Class.forName(fragmentClass); Constructor<?> constructor = cls.getConstructor(); Fragment fragment = (Fragment) constructor.newInstance(); // do some managing or add fragment to activity getFragmentManager().beginTransaction().add(fragment, "bla").commit(); } catch (Exception LetsHopeWeCanIgnoreThis) { } } } public static void startActivityWithFragment(Context context, String classPathName) { Intent intent = new Intent(context, ActivityFragmentWrapper.class); intent.putExtra(KEY_FRAGMENT_CLASS, classPathName); context.startActivity(intent); } } 

Вы можете запустить его так:

  ActivityFragmentWrapper.startActivityWithFragment(context, SomeSpecificFragment.class.getCanonicalName().toString()); 

Конечно, если у вашего фрагмента есть другой конструктор, вам нужно извлечь другой, но эта часть станет проще.