onConfigurationChanged wird nicht immer aufgerufen

P

paulinchen

Gast
Hallo,

ich habe in meiner App eine Methode, die bei jedem Orientation Wechsel aufgerufen werden soll. Dazu starte ich diese sowohl im onConfigurationChanged als auch im onResume event.
Aus irgendeinem Grund gibt es allerdings ein Szenario, wo das nicht richtig funktioniert und zwar folgendes:

1.Activity 1 wird geladen
2. Mittels TabWidget wechsele ich zu Activity 2
3. Orientierungswechsel in Activity 2
4. Mittels TabWidget zu Activity1 (OnResume) die Methode wird wie geplant ausgeführt
5. Orientierungswechsel in Activity 1, OnConfigurationChanged sollte ausgeführt werden, tut es aber erst bei erneuter Drehung.
Warum?

Kann das jemand nachvollziehen? Ist in diesem Fall gar nicht der OnConfigurationChanged Event zuständig?

Anbei mal der relevante Code:

Code:
     public boolean onOptionsItemSelected(MenuItem item) {
           // Handle item selection
           switch (item.getItemId()) {
           case R.id.reset:
               clear();
               TableLayout table = (TableLayout) findViewById(R.id.resultsLayout);
               table.removeAllViewsInLayout();
               TableLayout table_land = (TableLayout) findViewById(R.id.resultsLayout_land);
               table_land.removeAllViewsInLayout();
               return true;
           case R.id.quit:
               quit();
               return true;

           default:
               return super.onOptionsItemSelected(item);
           }
       } 
        @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.mainclock);
           
           InitializeUI();           
       }    
        @Override
        public void onResume(){
            super.onResume();
            
            orientationchange();
        }
        
        @Override
        public void onConfigurationChanged(Configuration newConfig) {    
            super.onConfigurationChanged(newConfig);
            
            orientationchange();
        }

}
Hier die Methode:
Code:
public void orientationchange(){
         
        myOrient = this.getResources().getConfiguration().orientation;
        Toast.makeText(MatClockActivity.this, "Orientation: " + myOrient, 
                Toast.LENGTH_SHORT).show();

        
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
               SlidingDrawer SD_land = (SlidingDrawer)findViewById(R.id.drawer_land);
               SD_land.setVisibility(View.GONE);
               SlidingDrawer SD = (SlidingDrawer)findViewById(R.id.drawer);
               SD.setVisibility(View.VISIBLE);
            }
            if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
                   SlidingDrawer SD = (SlidingDrawer)findViewById(R.id.drawer);
                   SD.setVisibility(View.GONE);
                   SlidingDrawer SD_land = (SlidingDrawer)findViewById(R.id.drawer_land);
                   SD_land.setVisibility(View.VISIBLE);
            }
    }
Im Manifest ist sowohl die MainActivity(also die für die Tabs zuständig ist), als auch die Activity 1 auf
Code:
android:configChanges="keyboardHidden|orientation"
gesetzt, um so den Neustart der Activity 1 zu unterdrücken.
 
weiß das echt niemand? Ist das ein Bug? Oder versteht niemand, wo das Problem liegt?
 

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
10
Aufrufe
212
swa00
swa00
SaniMatthias
Antworten
19
Aufrufe
942
swa00
swa00
O
Antworten
15
Aufrufe
2.955
ORHUX
O
Zurück
Oben Unten