旋转屏幕发生时如何防止系统调用oncreate方法?

时间:2014-01-15 14:48:52

标签: android rotation oncreate

嗨stackoverflow的朋友。我有一个播放器音乐,我在oncreate中调用playSong(id)(id是一个数组的索引,在该数组的索引中有一个路径音乐。但是有这个问题,当旋转屏幕然后歌曲一遍又一遍地从第一个索引播放在数组。我想因为每次事件旋转后调用oncreate方法。我也希望我的应用程序防止旋转因为这个事件在其他活动中有不良影响。 我如何解决这些类型的问题?

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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); 
}

答案 2 :(得分:1)

您可以将android:configChanges =“orientation”添加到AndroidManifest.xml上的Activity标记。试试吧。

答案 3 :(得分:0)

您可以将 android:configChanges =&#34; orientation | screenSize&#34; 添加到AndroidManifest.xml上的Activity标记。这会有所帮助。