2014-04-03 121 views
0

在我的應用程序中,我有MainActivty應該總是在protrait中查看。如果我將設備轉向橫向,則切換到TrendsActivity(以顯示一些圖)。當我切換回波泰特我只是在TrendsActivity稱之爲改變方向變化時的活動

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
     Intent intent = new Intent(this, TrendsActivity.class); 
     startActivity(intent); 
    } 
} 

然後:

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
    { 
     finish(); 
    } 
} 

這完成的全自動移回MainActivity活動這是由folliwing代碼MainActivty完成。到現在爲止還挺好。但是如果我在TrendsActivity中按下後退按鈕,我會以橫向模式返回到MainActivity,而我不想那樣做。我試圖調用MainActivity下面的代碼:

@Override 
protected void onRestart() 
{ 
    super.onRestart(); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 
} 

這是不行的,因爲現在的onConfigurationChanged()如果MainActivity不會被調用......

怎麼辦?

+1

爲什麼不直接在清單中指定說MainActivity應打開肖像模式和TrendsActivity應在開闊的景觀中的代碼?試過了嗎? – JoelFernandes

回答

1

難道你不覺得你可能會通過簡單地爲橫向模式指定一個備用xml並讓MainActivity相應地行爲來實現更簡潔的設計嗎?即使沒有這一點,在定位變化上發起另一項活動也不會成爲大多數用戶期望的。

0

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 
中的onResume()

使用這種MainActivty

+0

我試過了。它阻止了onConfigurationChanged()從beeing中調用jist,就像我在inRestart()中設置的那樣( – buestad

0

你可以嘗試設置在Android清單你的方向而已,試試下面的代碼

android:screenOrientation="portrait" 

那麼究竟你的代碼在清單看起來像

<activity 
    android:name=".yourActivityName" 
    android:screenOrientation="portrait" 
</activity> 
+1

)設置方向不會導致方向chnge –

+0

這會阻止onConfigurationChanged()從beeing調用,當我像setRequestedOrientation一樣打開設備(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT) ; – buestad

0

您應該添加這個到AndroidManifest

android:configChanges="orientation" 

這種方式告訴你的Android調用onConfigurationChanged當在姿勢的改變。

+0

與上面相同的答案... – buestad

0

我解決了這個在我的MainActivity只需更改佈局XML像fremmedehenvendelser建議更改代碼(Tusen TAKK!)

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
     //setTheme(android.R.style.Theme_NoTitleBar_Fullscreen); 
     setContentView(R.layout.activity_trends); 
    } 
    else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
    { 
     setContentView(R.layout.activity_main); 
    } 
} 

接下來的問題是,設置主題,讓全屏這種佈局顯示。這被註釋掉不行......我有這個在我的清單之前TrendsActivity

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"