2012-12-27 61 views
1

我正在用Android 2.3.3 API構建一個應用程序。我需要認識到方向的變化並採取一些行動。所以我加入Android清單下面,Android 2.3.3&4.1.2 android:configChanges用於檢測方向變化

android:configChanges="orientation|keyboardHidden 

我覆蓋的方法

public void onConfigurationChanged(Configuration newConfig) 

它可以完美運行於Android 2.3.3。但是,當我在4.1.2上安裝相同的應用程序(使用2.3.3 API構建)時,不會調用onConfigurationChanged()。我在網上搜索解決方案,並且人們建議在android清單中添加以下內容。

android:configChanges="orientation|keyboardHidden|screenSize" 

如果我使用上述語句構建應用程序並使用4.1.2 API構建,它在4.1.2設備上可以很好地工作。但我無法在2.3.3上安裝它。 2.3.3 API沒有「screenSize」選項。所以爲了支持這兩者,我該怎麼做?

感謝,KARTHIK

+0

可能重複的http://計算器.com/questions/6457659/android-onconfigurationchanged-not-being-called&http://stackoverflow.com/questions/5620033/o nconfigurationchanged-not-getting-called – oldergod

+0

這些對我的情況沒有幫助。正如我所說,他們建議我添加「screenSize」。但它在2.3.3 API中不受支持。 –

回答

2

喜看礦的AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="10" 
    android:maxSdkVersion="16"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".ConfigrationTask" 
     android:configChanges="orientation|keyboardHidden" 
     > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER"/> 
     </intent-filter> 

    </activity> 
</application> 

+0

我在清單文件中看不到「screenSize」。它仍然在4.1.2上工作嗎? –

+0

是的,方法被稱爲,FYI我測試了這個應用程序android 4.0 –

+0

非常感謝你的朋友..我真的不理解它背後的邏輯..但它的工作.. :) –

1

只是因爲你對編譯或目標,一個給定的API級別並不意味着你不能明確支持較低的空氣污染水平。嘗試在清單中添加如下內容。我從你問題中提到的版本中選取了關卡。

<uses-sdk 
    android:minSdkVersion="10" 
    android:targetSdkVersion="16"/> 
+0

我其實在我的代碼中有以下內容。但沒用。

+0

然後,它拒絕安裝在2.3.3設備上? – iagreen

+0

不,它安裝在2.3.3上,如果我使用2.3.3 API構建。我的意思是,項目屬性 - > Android - > Android 2.3.3和構建。 –

0

請注意你的情況這一點: config changes 屏幕方向改變 - 使用者旋轉設備。 注意:如果您的應用程序的目標API等級爲13或更高(由minSdkVersion和targetSdkVersion屬性聲明),那麼您還應該聲明「screenSize」配置,因爲當設備在縱向和橫向之間切換時它也會更改。

謝謝

+0

您是否看過我的完整問題?我說我不能添加「screenSize」因爲我正在用2.3.3 API構建應用程序。 –

+0

如果你的目標版本和最低sdk版本低於那麼API等級13然後就像我測試的方法被稱爲看看

1

僅供參考看看下面的代碼,我沒有用:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){ 
     Toast.makeText(getBaseContext(),"On Config Change LANDSCAPE", Toast.LENGTH_LONG).show(); 
    }else{ 
     Toast.makeText(getBaseContext(),"On Config Change PORTRAIT", Toast.LENGTH_LONG).show(); 
    } 
}