Android - 奇怪的Checkbox行为

时间:2012-04-03 07:01:19

标签: android

我遇到了以下问题:在我的Android应用程序中,我使用表格来显示一些信息。此信息还包含2个布尔值,显示为复选框。加载表时,复选框可以正常工作,但只要我更改界面方向,即使数据值为false,也会检查两个复选框。

表的定义如下:

<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/table_properties"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ffffffff"  
/>

该表中的一个布尔行:

<TableRow
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>   
    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"      
        android:id="@+id/text_jobprop_name" 
        style="@style/text_list_black"      
        android:layout_height="fill_parent"
        android:textSize="12dp"         
        android:padding="3dp"
        android:singleLine="false"  
        android:gravity="center_vertical"
        android:background="@color/table_property_name_background"  
        android:layout_weight="0.7"     
        android:layout_width="0dp"
    />  
    <LinearLayout
        android:layout_height="wrap_content"
        android:gravity="left"
        android:layout_marginRight="5dp"
        android:layout_marginLeft="10dp"
        android:layout_weight="1"   
        android:layout_width="0dp"
        android:background="@color/white">
        <CheckBox
            xmlns:android="http://schemas.android.com/apk/res/android"      
            android:id="@+id/chckbox_jobprop_value" 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:clickable="false"   
            android:layout_marginLeft="10dp"                    
        />
    </LinearLayout>
</TableRow>

在活动的onCreate方法中,我调用一个设置表的所有值的函数。我知道每次更改界面方向时都会调用此函数但我调试它并且数据值不会更改。

任何提示,想法,等等?

感谢。

2 个答案:

答案 0 :(得分:3)

  

在活动的onCreate方法中,我调用了一个设置的函数   表的所​​有值。我知道这个函数被调用了   每次我改变界面方向,但我调试它和   数据值不会改变。

这是真的但是尝试将复选框的设置放在onResume方法中......如果不是:你的super.onCreate何时被调用?

答案 1 :(得分:1)

试试这样..

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save UI state changes to the savedInstanceState.
// This bundle will be passed to onCreate if the process is
// killed and restarted.
 savedInstanceState.putBoolean("MyBoolean1",cb1.isChecked());
 savedInstanceState.putBoolean("MyBoolean2",cb2.isChecked());
  super.onSaveInstanceState(savedInstanceState);
}

并在onCreate中获取这样的值..

 @Override
public void onCreate(Bundle savedInstanceState) {
 .....
 boolean myBoolean1 = savedInstanceState.getBoolean("MyBoolean1");
 // now check its value and put the value in your checkbox..

现在它会按预期工作我想......