2014-01-15 2 views
2

Привет, друзья stackoverflow. У меня есть музыка для плеера, и я звоню в oncreate playSong (id) (id - это индекс массива, который имеет путь в этом индексе массива. Но есть такая проблема, что при повороте экрана затем снова и снова воспроизводятся пьесы из первого индекса в массиве.Я думаю, потому что метод oncreate вызывается после каждого поворота времени. Также я хочу, чтобы мое приложение предотвращало вращение. Возможно, это событие имеет плохой эффект в других activity.too, Как я могу исправить эти проблемы?Как предотвратить вызов метода oncreate системой, когда происходит экранирование вращения?

ответ

2

Вы можете использовать

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

или

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

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

Но вы должны назвать его перед setContentView(R.layout.main) может выглядеть следующим образом:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    setContentView(R.layout.main); 
} 
+0

но у меня много активности, и я уверен, что это событие происходит у них. – sarah

+0

Вы хотите его только в одном мероприятии? – Fraggles

+0

Я не понимаю, почему oncreate() снова напомнить? Я хочу понять это. и я не уверен, что эти события неэффективны в моей активности. Такие, как активность, которая имеет источник данных и список или другие вещи, когда есть в oncreate(). – sarah

2

вы можете сделать, как это android:configChanges="orientation|keyboardHidden|screenSize"

надеюсь, что это поможет вам

добавить его проявляться следующим образом в качестве примера

<application 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
<activity 
android:name=".MainActivity" 
android:label="@string/title_activity_main" 
android:configChanges="orientation|screenSize|keyboardHidden"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
</application> 
+0

Это должно быть на androidManifest? Да? – sarah

+0

Да, это должно быть в вашей активности в манифесте –

+0

И почему вы добавляете keyboardHidden и screenSize? эти события заставляют мое приложение для вызова oncreate() может быть? Да? – sarah

1

Вы можете добавить андроида: configChanges = «ориентацию» на активность метки на AndroidManifest.xml. Попробуй.

0

Вы можете добавить android: configChanges = "orientation | screenSize" в тег активности на AndroidManifest.xml. Это будет полезно.