2016-03-26 17 views
0

Düzen ve düzen-land klasörlerinde iki düzenim var. Sorun oryantasyon değiştiğinde, onCreate yöntemini çağırır. OnCreate yöntemi nasıl engellenir?Android aramayı değiştirmeden aramayı değiştirme on-create

Yaptığım şey budur. Ama hiç işe yaramadı.

AndroidManifest

<activity android:name=".MapsActivity" 
android:configChanges="orientation|keyboardHidden"> 

MapsActivity.java

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    orientationChange = true; 
    //reload your ScrollBars by checking the newConfig 
} 
+0

tam olarak ne onCreate içine olmasını istemiyor musunuz? Bunun olmasını engellemenin herşeyi engellemekten daha kolay olacağını düşünüyorum. –

+0

Oryantasyon değişikliğinin doğal sonucunu durduruyorsunuz * kesinlikle * neden bunu yapmak istediğinizi ve değişimi nasıl yapacağınızı anlayamıyorsanız. Bunu yaparak bir sürü yeni yeni sorun için potansiyel olarak soruyorsunuz. –

cevap

1

android:configChanges="keyboardHidden|screenSize|orientation" 
1

kullanabilirsiniz senin Aktivitesi manifest dosyasında bu ekle

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

veya

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

yönünü kilitleme. Çünkü bahsettiğiniz gibi, ekran her döndüğünde onCreate çağrılır.

Ama şuna benzer Could setContentView (R.layout.main) önce aramak zorunda: En AndroidManifest

yılında

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

veya böyle android:screenOrientation="sensorPortrait"

<activity 
      android:name=".ActivitiesClasses.Login" 
      android:label="@string/app_name" 
      android:screenOrientation="sensorPortrait" 
      android:theme="@style/AppTheme.NoActionBar" /> 
+0

Burada çalıştı. Teşekkür ederim. – statosdotcom

+0

hoş geldiniz. @statosdotcom –

+0

favori yanıt olarak işaretle lütfen daha fazla insana yardımcı olur –

1

Yön değiştirme değiştirildiğinde, ne w yapılandırması. yeniden yaratması gerekiyor. Yani, bu rekreasyondan çıkmanın yolu yok. aktivite önce

  1. o onsaveinstancestate çağırır mahvolacağı:

    bunu önlemek için bir yol vardır. & görünüm durumunuzu onCreate numaralı konumdan kaydedebildiğinizde, saveInstance &'u yeniden çoğaltabilirsiniz.

Kişisel Etkinlik Devlet Restore Kişisel Etkinlik Devlet

static final String STATE_SCORE = "playerScore"; 
static final String STATE_LEVEL = "playerLevel"; 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
// Save the user's current game state 
savedInstanceState.putInt(STATE_SCORE, mCurrentScore); 
savedInstanceState.putInt(STATE_LEVEL, mCurrentLevel); 

// Always call the superclass so it can save the view hierarchy state 
super.onSaveInstanceState(savedInstanceState); 
} 

kaydet

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); // Always call the superclass first 

// Check whether we're recreating a previously destroyed instance 
if (savedInstanceState != null) { 
    // Restore value of members from saved state 
    mCurrentScore = savedInstanceState.getInt(STATE_SCORE); 
    mCurrentLevel = savedInstanceState.getInt(STATE_LEVEL); 
} else { 
    // Probably initialize members with default values for a new instance 
} 
... 
} 
  1. Sen Fragment kullanabilirsiniz. setRetainIntace(true)'u ayarlamanız gereken. Daha sonra aktivite yok edilirken parça tahrip olmaz.

Refs:

Recreating an Activity

İlgili konular