1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

onConfigurationChanged wird nicht immer aufgerufen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von paulinchen, 13.04.2011.

  1. paulinchen, 13.04.2011 #1
    paulinchen

    paulinchen Threadstarter Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    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.
     
  2. paulinchen, 14.04.2011 #2
    paulinchen

    paulinchen Threadstarter Junior Mitglied

    Beiträge:
    25
    Erhaltene Danke:
    0
    Registriert seit:
    13.12.2010
    weiß das echt niemand? Ist das ein Bug? Oder versteht niemand, wo das Problem liegt?
     

Diese Seite empfehlen