2012-04-03 17 views
2

私は次の問題を抱えています。私のAndroid Appでは、テーブルを使っていくつかの情報を表示しています。この情報には、チェックボックスとして表示される2つのブール値も含まれています。テーブルがロードされると、チェックボックスは正常に動作しますが、インターフェイスの向きを変更するとすぐに、両方のチェックボックスがデータ値がfalseであってもチェックされます。Android - 奇妙なチェックボックスの動作

テーブルは次のように定義される:

<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方法でのテーブルの値。私は、この機能はインターフェイスの向きを変えるたびに呼び出されるが、私はそれをデバッグし、データ値は変化しないことを知っている。

ヒント、アイデアなどは何ですか?

ありがとうございました。

答えて

3

アクティビティのonCreateメソッドでは、テーブルのすべての値を に設定する関数を呼び出します。私はこの機能が と呼ばれていることを知っていますが、私はインターフェイスの向きを変更するたびにデバッグし、 のデータ値は変更されません。

チェックボックスの設定をonResumeメソッドに入れてみてください。そうでない場合は、super.onCreateはいつ呼ばれますか?

+0

はありがとうございますそれはうまくいった。 – Pathos

+0

何千もありがとう、これは私のためにそれを解決しました:)私はonRestoreInstanceStateがうまくいくかもしれないと聞いています。まだ奇妙な行動、および検索するのは難しい:/ – Groxx

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.. 

予想通り、今、それがうまくいくと思い...

関連する問題