2011-10-06 73 views
0

問題是,當屏幕更改方向時,textview背景顏色消失。 這裏是TextView的定義:Android在屏幕旋轉時保存TextView背景顏色

<TextView 
    android:id="@+id/nomResult" 
    android:layout_width="fill_parent" 
    android:layout_height="80sp" 
    android:text="Nom result" 
    android:layout_below="@id/svitrkods" 
    android:layout_alignRight="@+id/svitrkods" 
    android:layout_above="@+id/exit_button" 
    android:freezesText="true" 
    /> 

應用程序是庫存應用程序。當產品已經在庫存中時,我用紅色背景在textview中顯示文本。 vaiIrInvent.setBackgroundColor(0xfff00000);可以工作。但當屏幕旋轉時,背景顏色不見了... 當應用程序明星,我保存textview原始背景顏色defBackColor = vaiIrInvent.getBackground(); 然後在應用程序我切換到紅色或默認。

if (isInInventory) 
{ 
    vaiIrInvent.setBackgroundColor(0xfff00000); 
} 
else 
{ 
    vaiIrInvent.setBackgroundDrawable(defBackColor); 
} 

也許有像android這樣的選項:freezesText? 謝謝。

回答

0

回答我的情況是: 保存掃描的條形碼時屏幕方向更改

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    // Save entered code 
    savedInstanceState.putString("svkKods", svkKods.getText().toString()); 
    super.onSaveInstanceState(savedInstanceState); 
} 

並還原代碼和查詢db。

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    String mystr = savedInstanceState.getString("svkKods"); 
    svkKods.setText(mystr); 
    //if code presents 
    if (mystr.length() > 3) FindKods(mystr); //query database and fill all texts and variables 
} 

我正在因爲在一個變量做這種方式存儲的狀態,當條形碼在數據庫中被發現,然後用戶可以提交更改。否則是顯示消息必須找到條形碼...

0

它看起來像你失去了isInInventory狀態輪流,因爲默認情況下OS在這種情況下創建一個新的Activity實例。如果是這種情況,那麼最好的方法是使用Activity類的保存/恢復狀態回調。查看詳情:Saving activity state

1

燁rotion調用的onCreate(),你需要將信息保存到恢復的喜好

這個環節應該解釋這一點更好

Saving Android Activity state using Save Instance State

+0

我已經找到了,現在我正在尋找如何保存可繪製對象 我認爲我的問題有點大。因爲我有2個意見。一個在佈局文件夾中,一個在佈局文件夾中。當屏幕旋轉時,我需要找出是否設置了背景,然後將背景傳遞到橫向佈局。或者它不是個好主意? – Guntis

+0

問題比我想象的要大得多。當屏幕旋轉時,所有變量都消失了。我需要觸發器操作來編輯文本來重新查詢數據庫。明天我會繼續尋找一些解決方案。我可以保存在'onSaveInstanceState'中的變量數據。當然,我可以鎖定應用程序的水平或垂直,但我不喜歡該解決方案.. – Guntis