2012-07-01 21 views
5

Bu sorun hakkında [bu bağlantı] [1] gibi bir çok ileti okudum ve bir çözüm, onCreate etkinliğinin döndürme sırasında tekrar çağrılmasını önlemek için onConfigurationChanged olayını tezahür ettirmek ve işlemek için yönlendirme yapılandırmaları eklemektir. Ben yaptım ve olay düzgün bir şekilde tetiklenir, ancak, bu yürütmeden sonra, onCreate yöntemi de yürütülür! niye ya? neyi özlüyorum SizeYönlendirme değiştiğinde android etkinliği yeniden başlatıldı

bildirim,

<activity 
      android:name="webPush" 
      android:configChanges="keyboardHidden|orientation"/> 

aktivitesini,

@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); 
... 

cevap

11

.........

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name"> 

Android 3.2 (API seviyesi 13), iradesi "ekran ile başlayan boyut ", cihaz dikey ve yatay yönelim arasında değiştiğinde de değişir. API düzeyinde 13 veya üzeri için geliştirirken oryantasyon değişikliği nedeniyle çalışma zamanı yeniden önlemek istiyorsanız menifest dosyasında API düzeyinde 12 veya daha düşük

için çalışıyorsanız Böylece,

android:configChanges="orientation|screenSize" 
+0

hala onConfigChanges olay – Jaume

+0

onCreate tetiklemeden sonra tetiklediniz AndroidManifest dosyasında onCreate() –

+0

evet webPush, onCreate yönteminin önlenmesi gereken bir etkinliktir hangi android sürümünü kullanıyorsunuz ?? – Jaume

1

Bunu yazın Aktivite manifest dosyasında bu kod iki satır ederiz.

Sorununuzu çözeceksiniz. <activity android:name=".YourActivity" android:configChanges="orientation|keyboardHidden"/>

+0

Eğer yöneliminden dolayı çalışma zamanı yeniden önlemek istiyorsanız hala onCreate onConfigChanges olaydan sonra – Jaume

1

Etkinliğiniz herhangi bir yapılandırma değişikliğinde yeniden başlatılacak. Büyük olasılıkla klavye durumu değiştiğinden yeniden başlatılıyor. etkinliğin özelliklerine bu eklemeyi deneyin: Ben bu işe yarayacak

android:configChanges="orientation|keyboard|keyboardHidden" 
+0

hala onConfigChanges olay – Jaume

+1

sonra onCreate tetikleme tetikleme API düzeyi 13 veya üstü için geliştirirken değişiklik yaptıktan sonra "oryantasyon" değerine ek olarak "screenSize" değerini eklemeniz gerekir. Yani, android decalare: configChanges = "orientation | screenSize" – Rashid

0

kullanmalıdır, koymak Etkinlik Adınızı ilan ettikten hemen sonra.

android:configChanges="orientation" 

e.g.-
<activity 
     android:name=".NameOfYourActivity" 
     android:configChanges="orientation"/> 

Ve android 3.2 (API düzeyinde 13) veya daha yüksek sürüm ekran boyutunda

da öyle bu beyan değişir rotasyonuna değiştirir. Bunun için

,

android:configChanges="orientation|screenSize" 
2

Bunu yaptım. Bu kodu tezahürat ekledim ve mükemmel çalışıyor.

<activity 
     android:name="?" 
     android:label="@string/?" 
     android:theme="@style/?" 
     android:configChanges="orientation|screenSize"> 

Aygıt rotasyon olduğunda bir şeyi değiştirmek istiyorsanız size faaliyeti kapsamında bu eklemeniz gerekir. Geçerli kullanılabilir ekran boyutu değişti 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(); 
    } 
} 
0

gerekçe gösterdiler

Olay olabilir ardından. Bu, mevcut en boy oranına göre mevcut boyutta bir değişikliği temsil eder, böylece kullanıcı manzara ve portre arasında geçiş yaparken değişecektir.Bununla birlikte, uygulamanız API düzeyini 12 veya daha düşük bir seviyede hedefliyorsa, etkinliğiniz her zaman bu yapılandırma değişikliğinin kendisinin üstesinden gelir (bu yapılandırma değişikliği, Android 3.2 veya daha yeni bir cihazda çalışırken bile etkinliğinizi yeniden başlatmaz). 13.

yüzden "oryantasyon" ile birlikte API düzeyinde Eklendi yanı "Screensize" add

İlgili konular