static int i;  //先定义了一个静态变量
   radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {  @Override   public void onCheckedChanged(RadioGroup radioGroup, int checkedId) {  
       checkedId = radioGroup.getCheckedRadioButtonId(); 
       i = checkedId; 
     System.out.println("i1  "+i);
          }  
});        
     System.out.println("i2   "+i);为什么输出"i1  "有值,"i2   "却等于0呢?这"i1  "的值即i的值如何传出来呢? 望高手指点?

解决方案 »

  1.   

    new RadioGroup.OnCheckedChangeListener(){}
    在这个匿名类中给它的值,
    外面的static int i没有值
      

  2.   

    不要定义成static形式,初始化i=0,而你在public void onCheckedChanged(RadioGroup radioGroup, int checkedId)中给i赋值之后,当这个函数运行结束后,i值重新变为0了,你可以把static去掉试一下
      

  3.   

    执行顺序也是一个问题,public void onCheckedChanged(RadioGroup radioGroup, int checkedId)这个执行完了,不一定一定执行你的i2的打印动作