-1

をラジオボタンを作成します。次のように私は、アダプタのラジオボタンで作成したカスタムアダプタでRADIOGROUPで

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View vi = convertView; 

    if (vi == null) { 
     LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     vi = li.inflate(R.layout.row, null); 
    } else { 
     vi = convertView; 
    } 

    final ItemFormRow item = items.get(position); 

    v = new ViewHolder(); 
    v.answerGroup = (RadioGroup) vi.findViewById(R.id.answerGroup); 

    v.answerGroup.removeAllViews(); 
    for (int i=0; i<answers.size(); i++) { 
     RadioButton rb = answers.get(i); 
     v.answerGroup.addView(rb); 
    } 

    return vi; 
} 

私が活動してアダプタの項目を保存状態のためonSaveInstanceStateを使用します。

onCreateで、その後の取得
@Override 
protected void onSaveInstanceState(Bundle outState) { 
    outState.putParcelableArrayList("test", listItems); 
    super.onSaveInstanceState(outState); 
} 

方法。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (savedInstanceState != null) { 
     listItems = savedInstanceState.getParcelableArrayList("test"); 
    } 

    .... 
} 

私はデバイス(stop on line: v.answerGroup.addView(rb))を回転させ

は例外を取得します。

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 

私が削除した場合 - onSaveInstanceState、そのすべてが正常に動作し、例外がスローされません。

状態を保存する必要があります。 修正方法を教えてもらえますか?

+0

この行を削除しましたか? – Chisko

答えて

0

はこれを試してみてください:

public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder vh = new ViewHolder(); 

     if (convertView == null) { 
      LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = li.inflate(R.layout.row, parent, false); 

      // Do all necessary findViewById's here 

      convertView.setTag(vh); 
     } else { 
      vh = (ViewHolder) convertView.getTag(); 
     } 

     // Not sure what you are trying to do here. But the above should solve (or at least mitigate) the issue 
     final ItemFormRow item = items.get(position); 
     vh.answerGroup = (RadioGroup) convertView.findViewById(R.id.answerGroup); 

     for (int i = 0; i < answers.size(); i++) { 
      RadioButton rb = answers.get(i); 
      vh.answerGroup.addView(rb); 
     } 

     return convertView; 
    } 

それは必要ありませんので、私はあなたのView変数を削除しました。

EDIT

あなたは運を持っていなかったとしても vh.answerGroup.removeAllViews();

関連する問題