2017-05-30 18 views
2

基本的にここで私は3つの異なるフラグメントに3つのチェックボックスリストを持っています。アクティビティを開くと、デフォルトのフラグメントのチェックボックスは通常のように表示されますが、別のフラグメントのものは表示が異なります。チェックボックスの値はまだtrueです。以下は、チェックボックスを使って物事をより明確にするためのイメージと私のコードです。チェックボックスの値はtrueですが、ダニが表示されません - Android/Java

最初のフラグメントのページ:

enter image description here

第2のフラグメントのページ:チェックボックスを設定するための

enter image description here

コードとそのif condition

private void setCheckBox(ArrayList<DataPrefType> arrayList){ 
    for(int i = 0; i < arrayList.size(); i++){ 
     id = i + 1; 
     checkBox = new CheckBox(getActivity()); 
     checkBox.setId(i + 1); 
     checkBox.setText(arrayList.get(i).getName()); 
     checkBox.setPadding(10, 10, 10, 10); 
     checkBox.setLayoutParams(params); 
     checkBox.setGravity(Gravity.CENTER); 
     checkBoxLayout.addView(checkBox); 

     if(!userPreference.isEmpty() || userPreference != null){ 
      for(int j = 0; j < userPreference.get(0).getDataPrefTypeArrayList().size(); j++){ 
       int retrieveId = Integer.parseInt(userPreference.get(0).getDataPrefTypeArrayList().get(j).getId()); 
       if(checkBox.getId() == retrieveId) 
        checkBox.setChecked(true); 
      } 
     } 
+0

最初のif文で 'userPreference'がヌル('!userPreference.isEmpty() 'の前)であるかどうか最初にチェックし、' || 'を' && '両方の条件が真でなければならない。 – Tyrmos

+0

いいえ。そのチップをありがとう:) –

+0

私はまったく同じ問題に直面しています。タブ付きアクティビティに2つの異なるフラグメントがあり、それぞれにチェックボックスがあります。私はOnViewCreatedに基づいてチェックボックスにデータを読み込みます。 2番目の断片では、本当のチェックボックスがチェックされているのではなく強調表示されています。私は、タブ付きの活動のためにその問題を感じています。 – xSooDx

答えて

0

YフラグメントのsetUserVisibleHint()メソッドをオーバーライドして、そこのチェックボックスにロードすることができます。

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
     super.setUserVisibleHint(isVisibleToUser); 
     if(isVisibleToUser)setCheckBox(); 
} 

これは単なる回避策です、と私はそれを解決するための最善の方法を考えていませんが、私はより良いまだ何も見つかっていません。これにより、NULLポインタの例外が発生する可能性があります。

関連する問題