0

我正在制作一个测验应用程序,其中有一个viewPager,其中有15个页面,每个页面有1个问题,并且在最后一页有一个提交按钮。现在,我想获得15个问题中选择的最大选项数量。 下面是我的代码如何获得收音机组中的选定单选按钮的编号

QuestionPagerFragment.java:

public class QuestionPagerFragment extends Fragment { 

    protected View mView; 
    String pageData[]; //Stores the text to swipe. 
    String optionData[];//Stores the option data. 
    int rid; 
    RadioGroup group; 
    String ans; 
    String ans1; 
    String ans2; 

    SharedPreferences prefs; 
    public static final String MyPREFERENCES = "MyPrefs" ; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     mView = inflater.inflate(R.layout.page, container, false); 
     return mView; 
    } 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     prefs = getActivity().getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE); 
     pageData=getResources().getStringArray(R.array.desserts); 

     optionData=getResources().getStringArray(R.array.options); 

     group = (RadioGroup)mView.findViewById(R.id.group); 
     group.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       // TODO Auto-generated method stub 

       checkedId=group.getCheckedRadioButtonId(); 
       rid=checkedId; 
       save(); 
      } 
     }); 
       ((TextView)mView.findViewById(R.id.textMessage)).setText(pageData[getArguments().getInt("pos")]); 
     if(getArguments().getInt("pos") == 14) { 
      ((Button)mView.findViewById(R.id.submitbtn)).setVisibility(View.VISIBLE); 
      ((Button)mView.findViewById(R.id.submitbtn)).setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v){ 
         System.out.println("AAAAAAAAAAAAAAAAA-------------"+MainActivity.FLAG_A); 
         System.out.println("BBBBBBBBBBBBBBBBB-------------"+MainActivity.FLAG_B); 
         System.out.println("CCCCCCCCCCCCCCCCC-------------"+MainActivity.FLAG_C); 
         System.out.println("DDDDDDDDDDDDDDDDD-------------"+MainActivity.FLAG_D); 
         click(); 
     }     
       }); 
     } 

     for(int i = 0; i < group.getChildCount(); i++){ 
      ((RadioButton) group.getChildAt(i)).setText(optionData[(getArguments().getInt("pos")*4)+i]); 
     }  
    } 
    public void save() { 

      if(rid==2131034179){ 
       MainActivity.FLAG_A++;     
      } 
      else if(rid==2131034180){ 
       MainActivity.FLAG_B++;  
      } 
      else if(rid==2131034181){ 
       MainActivity.FLAG_C++;  
      } 
      else if(rid==2131034182){ 
       MainActivity.FLAG_D++;  
      } 
    } 
    public void click(){ 
      ans = String.valueOf(Math.max(MainActivity.FLAG_A, MainActivity.FLAG_B)); 
      ans1 = String.valueOf(Math.max(Integer.parseInt(ans), MainActivity.FLAG_C)); 
      ans2 = String.valueOf(Math.max(Integer.parseInt(ans1), MainActivity.FLAG_D)); 
      String a = ans2; 
      SharedPreferences prefss = getActivity().getSharedPreferences("idValue", 0); 
      SharedPreferences.Editor editor = prefss.edit(); 
      editor.putString("idValue", a); 
      editor.commit(); 
      Log.e("Shared Pref","-----------------------" +a); 
    } 
} 

而且MainActivity.java:

public class MainActivity extends FragmentActivity { 

    String pageData[]; //Stores the text to swipe. 
    String optionData[];//Stores the option data. 
    LayoutInflater inflater; //Used to create individual pages 
    ViewPager vp; //Reference to class to swipe views 
    Button submit; 
    public static int FLAG_A; 
    public static int FLAG_B; 
    public static int FLAG_C; 
    public static int FLAG_D; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     pageData=getResources().getStringArray(R.array.desserts); 

     optionData=getResources().getStringArray(R.array.options); 

     inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     vp=(ViewPager)findViewById(R.id.viewPager); 
     vp.setAdapter(new ScreenSlidePagerAdapter(getSupportFragmentManager())); 

    } 

    private class ScreenSlidePagerAdapter extends FragmentPagerAdapter { 
     public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      Fragment f = new QuestionPagerFragment(); 
      Bundle b = new Bundle(); 
      b.putString("que", pageData[position]); 
      b.putInt("pos", position); 
      f.setArguments(b); 
      return f; 
     } 

     @Override 
     public int getCount() { 
      return pageData.length; 
     } 
    } 
} 

任何帮助将是appreciated.Thanks

回答

5

你可以得到这样的

int radioButtonID = group.getCheckedRadioButtonId(); 
View radioButton = group.findViewById(radioButtonID); 

// If you want position of Radiobutton 
int position = group.indexOfChild(radioButton); 

完整代码

//complete code.. 
//rgp is your radio group 
rgp.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       int radioButtonID = group.getCheckedRadioButtonId(); 
       View radioButton = group.findViewById(radioButtonID); 
       int position = group.indexOfChild(radioButton); 
      } 
     }); 
+0

非常感谢,我也为我翻转标志递增,虽然我不是重新选择 – user3699550 2015-02-05 14:12:54

+0

你的意思是要清除单选按钮组,并再次重新选择单选按钮,屏幕多了一个疑问? – 2015-02-05 14:17:42

+0

不,我希望标志只应该增加一次意味着如果用户再次访问该页面,但不改变答案,那么所选选项的标志不应该增加,因为它现在正在发生 – user3699550 2015-02-05 14:24:44