0

Прежде чем отмечать этот вопрос как дубликат, я хотел бы указать, что у меня странное требование, которым я бегу. Мое приложение поддерживается как телефонами, так и планшетами, НО ориентация поддерживается ТОЛЬКО таблетками, а не телефонами. Я ограничил его работой только для планшетов. Но теперь у меня странная проблема, когда мне нужно включить ориентацию всего одним фрагментом в телефоне. В моем случае скажите xфрагмент в x модуле. Как я могу это сделать, не снимая ограничений на телефоны, чтобы не поддерживать ориентацию. Есть ли другой способ? В настоящее время в моих осколочных утилитами Я делаю это:Как получить ориентацию для одного конкретного фрагмента моего приложения?

public static void setActivityOrientation(Activity activity){ 
     boolean tabletSize = MyUtils.isTablet(activity); 
     if (tabletSize) { 
      activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); 
     } else { 
      activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 
    } 

и назвав его OnCreate в базовой деятельности:

FragmentUtils.setActivityOrientation(this); 

Как заставить его работать только для этого конкретного фрагмента? Есть идеи? благодаря!

ответ

0

Если xfragment занимает весь экран, вы можете использовать один и тот же код, указанный выше в правильном жизненном цикле xfragment, как

public class XFragment extends android.support.v4.app.Fragment{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if(!MyUtils.isTablet(getActivity())){ 
      getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR); 
     } 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     if(!MyUtils.isTablet(getActivity())){ 
      getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 

    } 
} 

Случай 2:

Если XFragment не в полном объеме, и у вас есть несколько фрагмент , Тогда единственный способ - вызвать отсоединение и прикрепить XFragment вручную.

+0

hi sowmia, это решение работает, но это заставляет весь мой телефон работать над пейзажем, как я могу сделать ТОЛЬКО одну работу над фрагментами в ландшафте, а не все приложение –

+0

@JusticeBauer, я не получал ур-точку. мы возвращаем ориентацию к портрету, когда оставляем фрагмент (onPause), а затем, как все приложение получает ландшафтный режим. Или у вас есть несколько фрагментов на этом экране? – sowmia