0

Мне нужно, чтобы обнаружить изменение ориентации экрана на фрагменте и сделать это так, я в настоящее время с помощью этого метода:на фрагментах

public void onEvent(OrientationEvent event){...} 

, который работает абсолютно нормально на моем Nexus 4. Проблема I есть на Samsung Galaxy S3, метод не вызывается при вращении экрана. У кого-нибудь есть идея?

Большое спасибо.

ответ

0
private String getScreenOrientation(){  
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
    return "ORIENTATION_PORTRAIT"; 
else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) 
    return "ORIENTATION_LANDSCAPE"; 
else 
    return ""; 

}

1

Существует хороший Google веб-страницы на этом @Handling Runtime Changes. Это охватывает, когда пользователь меняет экран между горизонтальным/вертикальным видом и приложениями переключения. Фрагмент кода:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
} 

Этот код может быть помещен в подкласс Activity или Fragment.

В вашем манифесте XML, вы установили:

<activity android:name=".MyActivity" 
      android:configChanges="orientation"> 

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

+0

Большое спасибо за вашу помощь. Но ваше решение касается деятельности только я думаю. Я хочу обнаружить обнаружение экрана на фрагменте. – thomaus

+0

@thomaus, я попробовал, и, верьте или нет, это работает! Помните, что фрагмент может легко получить родительскую активность по getActivity().Я признаю, что вы беспокоили меня, и я подумал, что должен сказать вам, что вы должны добавить метод переопределения onConfigurationChanged в свой основной актив и передать информацию в Фрагмент, который является опцией. –

+0

Для лучшей ясности, onConfigurationChanged() можно также разместить в подклассе Fragment. –

0

Вам нужно переопределить метод onConfigurationChange() в вашем фрагменте проще. Вы можете посмотреть на этом разработчике андроида посте:

общественной недействительная onConfigurationChanged (Конфигурация newConfig)

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

В то время, когда эта функция была вызвана, ваш объект ресурсов будет обновлен, чтобы возвращать значения ресурсов, соответствующие новой конфигурации .

Параметры

newConfig Новая конфигурация устройства.

Внутри onConfigurationChanged, Вы должны проверить текущую ориентацию, как:

newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE 
newConfig.orientation == Configuration.ORIENTATION_PORTRAIT 

и добавить логику