[英]android activity restarted when orientation changes
我閱讀了很多關於這個問題的帖子,比如[this link] [1],一個解決方案是添加方向configChanges來清單和處理onConfigurationChanged事件,以防止在旋轉時再次調用onCreate活動。 我做了它並且事件被正確觸發,但是,在執行之后,onCreate方法也被執行了! 為什么? 我錯過了什么? 謝謝
表現,
<activity
android:name="webPush"
android:configChanges="keyboardHidden|orientation"/>
活動,
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.vistaaib);
}
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.vistaaib);
...
我想這會起作用.........
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
從Android 3.2(API級別13)開始,當設備在縱向和橫向之間切換時,“屏幕尺寸”也會改變。 因此,如果要在開發API級別13或更高級別時因為方向更改而阻止運行時重新啟動,則必須使用
android:configChanges="orientation|screenSize"
我做到了 我將此代碼添加到清單中,它完美無缺。
<activity
android:name="?"
android:label="@string/?"
android:theme="@style/?"
android:configChanges="orientation|screenSize">
如果要在設備旋轉時更改某些內容,則需要在活動下添加此項。
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中的manifest文件中寫下這兩行代碼。
似乎這將解決您的問題。 <activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden"/>
您的活動將在任何配置更改時重新啟動。 最有可能是因為鍵盤狀態發生變化而重新啟動。 嘗試將此添加到活動的屬性:
android:configChanges="orientation|keyboard|keyboardHidden"
如果您的API級別為12或更低
在menifest文件中,在聲明您的活動名稱后立即放入以下內容。
android:configChanges="orientation"
例如-
<activity
android:name=".NameOfYourActivity"
android:configChanges="orientation"/>
而在Android 3.2(API級別13)或更高版本的屏幕大小也會隨着輪換的變化而改變,所以也要聲明這一點。
為了這,
android:configChanges="orientation|screenSize"
以下可能是原因
事件:screenSize
當前可用的屏幕大小已更改。 這表示當前可用大小相對於當前寬高比的變化,因此當用戶在橫向和縱向之間切換時會發生變化。 但是,如果您的應用程序的目標是API級別12或更低,那么您的活動始終會自行處理此配置更改(即使在Android 3.2或更高版本的設備上運行,此配置更改也不會重新啟動您的活動)。 在API級別13中添加。
所以除了“orientation”之外,還要添加“screenSize”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.