2013-11-25 1 views
1

매우 이상한 오류입니다. TextView와 비슷한 것을했는데 모든 것이 매력처럼 작동하므로 라디오 버튼에서도 작동해야한다고 가정합니다.Android에서 멀티 라디오 버튼이 표시되지 않습니다 - 이상한 동작

android의 라디오 버튼에 문제가 있습니다. 하나의 버튼에 값을 설정하면 모든 것이 정상입니다. 그러나 장치를 회전 시키면 이상한 일이 일어나기 시작합니다.

또는 값이 표시, 또는 모두 같은 값, 또는 이전에 설정되어 그 값을 클릭하는 것은 불가능합니다 (눈에 보이지 않는입니다) 나는 저장된 값을 확인 않았다

, 그리고 그들이되지 않습니다 승인. 누군가 내가 잘못하고있는 것을 나에게 설명 할 수 있습니까? 대단히 감사합니다.

코드 :

package com.example.radiobutton; 

import java.util.ArrayList; 

import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.RadioGroup.OnCheckedChangeListener; 

/** 
* 
*/ 

public class MainFragment extends Fragment { 

private ArrayList<ItemL> mItemList; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mItemList = HolderItemL.get(getActivity()).getList() ; 

} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){ 
    View v = inflater.inflate(R.layout.fragment_main, parent, false); 
    LinearLayout topLayout = (LinearLayout) v.findViewById(R.id.top_layout); 

    showPanel(topLayout, inflater, parent); 

    return v; 
} 



private void showPanel(LinearLayout topLayout, LayoutInflater inflater, ViewGroup parent) { 
    for(int i = 0; i < mItemList.size(); i++){ 
     final ItemL product = (ItemL) mItemList.get(i); 
     View aLayout = inflater.inflate(R.layout.radio_layout, parent, false); 
     ((ViewGroup) topLayout).addView(aLayout); 

     View rrrt = inflater.inflate(R.layout.group_radio_layout, parent, false); 
     ((ViewGroup) aLayout).addView(rrrt);  

     RadioGroup radioGroup = (RadioGroup) rrrt.findViewById(R.id.aditivs_radio_group); 
     radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       switch(checkedId) { 
       case R.id.radio_alergen_yes_contian: 
        product.setContain(true); 
        break; 
       case R.id.radio_alergen_not_contain: 
        product.setContain(false); 
        break; 
       } 
      } 
     }); 


     RadioButton yesContain = (RadioButton) rrrt.findViewById(R.id.radio_alergen_yes_contian); 
     RadioButton notContain = (RadioButton) rrrt.findViewById(R.id.radio_alergen_not_contain); 
     if(product.isContain() != null){ 
      if(product.isContain().booleanValue()){ 
       yesContain.setChecked(true); 
       System.out.println("#contain yes#"); 
      } 
      else{ 
       notContain.setChecked(true); 
       System.out.println("#contain not#"); 
      } 
     } 
    } 
} 
} 



class HolderItemL { 

public static ArrayList<ItemL> listItems = new ArrayList<ItemL>(); 
private static HolderItemL sHolderItemL; 
private Context mAppContext; 

private HolderItemL(Context context){ 
    mAppContext = context; 
    for(int i = 0; i < 2; i++){ 
     ItemL l = new ItemL(); 
     listItems.add(l); 
    } 
} 

public static HolderItemL get(Context c) { 
    if(sHolderItemL == null){ 
     sHolderItemL = new HolderItemL(c.getApplicationContext()); 
    } 
    return sHolderItemL; 
} 

public ArrayList<ItemL> getList(){ 
    return listItems; 
} 
} 



class ItemL { 

private Boolean contain; 

public Boolean isContain() { 
    return contain; 
} 

public void setContain(boolean contain) { 
    this.contain = contain; 
} 
} 

XML : XML

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fragmentContainer" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
/> 

Activiti_main : Fragment_main

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<LinearLayout 
    android:id="@+id/top_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 


</LinearLayout> 

</ScrollView> 

XML : group_radio_layout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<RadioGroup 
     android:id="@+id/aditivs_radio_group" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <RadioButton 
      android:id="@+id/radio_alergen_yes_contian" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="yes_contian" /> 

     <RadioButton 
      android:id="@+id/radio_alergen_not_contain" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="not_contain" /> 
    </RadioGroup> 


</LinearLayout> 

XML : radio_layout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<TextView 
    android:id="@+id/alergen_name_title" 
    style="?android:listSeparatorTextViewStyle" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="10dp" 
    android:text="title" /> 

</LinearLayout> 

답변

0

나는 라디오 버튼에 대한 XML 파일을 제거하여 문제를 해결했고, 나는 동적으로 보여 주었다. 이제 모든 로직이 정상적으로 작동합니다.

XML에서 오류의 원인을 알 수 없다는 것은 사실입니다. 그래서 모든 설명을 부탁드립니다.

관련 문제