2013-01-10 81 views
0

我有一個顯示多個複選框的android視圖。它們都是動態添加的,並且我爲每個部分設置了一個文本。安卓複選框在切換到橫向時更改文本

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 
     LayoutInflater inflater = getLayoutInflater(); 

     for (String string : getResources().getStringArray(R.array.string_array)) { 
      LinearLayout searchField = (LinearLayout) inflater.inflate(R.layout.cb, null); 

      CheckBox checkBox = (CheckBox) searchField.findViewById(R.id.checkBox1); 
      checkBox.setText(string); 
      layout.addView(searchField, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)); 
     } 
    } 
} 

從代碼中可以看到,我有一個字符串數組,併爲數組中的每個字符串添加一個複選框。首次顯示視圖時,所有複選框都具有正確的文本,但在將設備旋轉到橫向或縱向模式後,所有複選框都具有相同的文本(來自最後一個複選框)。任何旋轉(重畫屏幕)都不會影響文本。它們都保留在最後一個複選框的文本中。

我已經看過調試器,複選框對象是每個字符串的新對象,所以我不使用同一個對象實例。我目前沒有想法。

你知道爲什麼會發生這種情況嗎?

回答

0

當您旋轉屏幕時,運行時資源被更改,並且活動被重新啓動。兩種方法來解決你的問題:

  1. 握住你所有的複選框的值在OnCheckedChangeListener和重置他們回到onResume
  2. 由自己處理onConfigurationChanged,根據https://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange
+0

的問題是不是與複選框的值,它實際上是出現在複選框的文本。這應該保持不變,考慮這行「checkBox.setText(string);」 –