2011-04-15 104 views
1

我在我的佈局中使用了一個gestureOverlayView,用於繪製數字簽名。當我繪製某個方向(如風景)然後改變方向時,問題就會出現 - overlayView剛好清除。我試過包括onConfigurationChanged();但沒有效果。我也試圖與onSaveInstance和onRestoreInstance以下,但它給了我無解:手勢在方向改變時清除

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    Gesture gesture = overlay.getGesture(); 
    outState.putParcelable("gesture", (Parcelable) gesture); 
    super.onSaveInstanceState(outState); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    Gesture gesture = (Gesture) savedInstanceState.getParcelable("gesture"); 
    overlay.setGesture(gesture); 
    mDoneButton.setEnabled(true); 
    super.onRestoreInstanceState(savedInstanceState); 
} 

我自己也嘗試包括:

android:configChanges="fontScale|uiMode|screenLayout|navigation|touchscreen|mcc|mnc|orientation|keyboardHidden|keyboard"> 

但是,即使這是沒有用的。

有沒有人有這個問題的解決方案?

+0

嘿感謝您的編輯喬恩你能也幫我弄了上述回答 – 2011-04-20 04:15:18

回答

2

我想你的代碼在我的應用程序和有同樣的問題。 getGesture()的結果在onSaveInstanceState,onStop和onPause中爲null,所以我猜測GestureOverlayView在屏幕旋轉和調用這些方法之間的某處失效。

解決方法是覆蓋onGesturePerformed,假設您的Activity實現了OnGesturePerformedListener,並且您在疊加層上調用addOnGesturePerformedListener(this),並保存最近的Gesture的成員實例。例如:

@Override 
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) { 
    mCurrentGesture = gesture; 
    } 

然後在您的onSaveInstanceState中,只需獲取並打包成員實例,而不是調用getGesture()。現在,當Activity重新創建時,setGesture()應該按預期工作。

+0

hey thnx ..我會嘗試自己實現這個 – 2011-05-12 11:30:03

0

當方向改變時,它重新開始活動。您可以嘗試限制清單文件中應用程序的方向。

機器人:screenOrientation = 「肖像」

+0

?嘿,謝謝,但我不想限制方向。我想保留手勢,以防方向發生變化。 – 2011-05-10 04:38:37

1

使用Android:configChanges =「fontScale | uiMode |屏幕布置|網站導航|觸摸屏| MCC在清單或嘗試onSavedInstance;