2014-04-23 184 views
0

我正在縮小範圍並解釋爲儘可能簡單, 主要活動啓動異步任務。Android NullPointerException在屏幕方向更改

當方向改變onCreate()被召回所以Async創建一次獲得。所以在onPreExecute()我鎖定我的方向,並在onPostExecute()我釋放鎖定方向。通過這種方式,如果Async任務已經開始,另一個任務實例將永遠不會被創建。

另一個問題已經開始,主要活動本身findViewById()返回null,當我隨機保持改變屏幕方向。在5-6次嘗試中重新產生一次。

該怎麼辦?任何幫助

請問方法或主線程完成後onCreate()得到重新叫......或者是瞬時的,因爲一旦方向得到改變

謝謝

-------- -------更新

<application 
     android:allowBackup="true" 
     android:icon="@drawable/ap_logo" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="agilepoint.android.mobilebpm.main.LoginActivity" 
      android:configChanges="orientation" 
      android:label="@string/app_name" 
      android:logo="@drawable/menu_button" 
      android:windowSoftInputMode="adjustPan|stateHidden" 
      > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 

       <data android:scheme="http" /> 
      </intent-filter> 
     </activity> 
</application> 
+0

任何代碼將有助於診斷問題 –

+0

發佈您的清單文件和錯誤跟蹤。 –

+0

您也可以在清單中禁用應用程序重新啓動。此外,長時間運行的任務可以通過服務來處理。 – atok

回答

5

發現我的解決方案...

android:configChanges="orientation" does not work with fragments如果要防止因方向改變運行時重新啓動了API級別13或更高版本(由minSdkVersiontargetSdkVersion宣佈開發時

屬性),除了orientation值之外,還必須包含screenSize值。也就是說,您必須聲明android:configChanges="orientation|screenSize"

0

爲清單中的該特定活動添加android:configChanges =「orientation」。

+0

我試圖在configChanges中設置方向,onConfigurationChanged()沒有被調用,onCreate被一直調用。 – harshal