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:
Hier die Methode:
Im Manifest ist sowohl die MainActivity(also die für die Tabs zuständig ist), als auch die Activity 1 auf
gesetzt, um so den Neustart der Activity 1 zu unterdrücken.
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();
}
}
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);
}
}
Code:
android:configChanges="keyboardHidden|orientation"