2012-05-24 40 views
0

我的应用程序打算根据两个选定的单选按钮之一选择图像切换器内容。单选按钮单击时,应用程序不会选择所需的选项,并最终导致应用程序崩溃。Android:刷新图像切换器内容基于radioButton选择

最大的问题是我想释放数组,保存基于单选按钮选中的swicher图像。

此外,还有两个阵列带有图像参考。我想删除库中的所有数组并添加一个引用。这是我的代码。

public void onCheckedChanged(RadioGroup group, int checkedId) { 

    // TODO Auto-generated method stub 

    //check which id is selected 

    radioCheckedId= checkedId; 


    //radio button checked 

    switch(radioCheckedId){ 

     case R.id.radBtnAccident: 

//删除所有阵列 如果(pics.length> 0){

   for (int arr=0;arr<pics.length;arr++){ 

        pics[arr]=null; 

       } 
      } 

      //populates array 

      pics = new Integer[]{ R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, 
            R.drawable.e,R.drawable.exit, R.drawable.plan, R.drawable.icon, R.drawable.plan }; 

      chooseImgArray(pics); 

     break; 

     case R.id.radBtnOthers: 

      //populates other array 

      pics = new Integer[]{R.drawable.exit, R.drawable.plan, 

R.drawable.icon,R.drawable.plan,R.drawable.c};

  chooseImgArray(pics); 
     break; 

    default: 

    break; 


    } 

} 

public void chooseImgArray(final Integer[] array){ 


    iSwitcher = (ImageSwitcher) findViewById(R.id.ImgSwith); 

    iSwitcher.setFactory(this); 
    iSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in)); 
    iSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out)); 

    gallery = (Gallery) findViewById(R.id.galImage); 

    gallery.setAdapter(new ImageAdapter(this)); 

    gallery.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int count,long arg3) { 
      iSwitcher.setImageResource(array[count]); 

     } 

    }); 




} 

回答

0
 
I put Example code for ImageSwitcher with Gallery Check it. 
it is usefull to u. 
public class TestActivity extends Activity implements ViewFactory, 
     OnItemSelectedListener { 

    private Gallery gallery; 
    private ImageSwitcher iSwitcher; 
    private RadioGroup rdgSelection; 
    private Boolean flag = true; 

    private Integer[] Array1 = { R.drawable.arrow, R.drawable.arrow1, 
      R.drawable.arrow2, R.drawable.arrow3 }; 
    private Integer[] Array2 = { R.drawable.camera, R.drawable.camera1, 
      R.drawable.camera2, R.drawable.camera3 }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     gallery = (Gallery) findViewById(R.id.gallery); 
     iSwitcher = (ImageSwitcher) findViewById(R.id.imgSwitcher); 
     rdgSelection = (RadioGroup) findViewById(R.id.rdgSelection); 

     iSwitcher.setFactory(this); 
     rdgSelection.check(rdgSelection.getChildAt(
       rdgSelection.getChildCount() - 1).getId()); 

     if (rdgSelection.getCheckedRadioButtonId() == R.id.rdb1) { 
      flag = true; 
      gallery.setAdapter(new ImageAdapter(TestActivity.this)); 
     } else { 
      flag = false; 
      gallery.setAdapter(new ImageAdapter(TestActivity.this)); 
     } 
     rdgSelection.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       gallery.setAdapter(new ImageAdapter(TestActivity.this)); 
       if (rdgSelection.getCheckedRadioButtonId() == R.id.rdb1) 
        flag = true; 
       else 
        flag = false; 
      } 
     }); 
     gallery.setOnItemSelectedListener(this); 

    } 

    public class ImageAdapter extends BaseAdapter { 
     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      if (flag) 
       return Array1.length; 
      else 
       return Array2.length; 
     } 

     public Object getItem(int position) { 
      return position; 
     } 

     public long getItemId(int position) { 
      return position; 
     } 

     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView i = new ImageView(mContext); 
      if (flag) 
       i.setImageResource(Array1[position]); 
      else 
       i.setImageResource(Array2[position]); 
      i.setAdjustViewBounds(true); 
      i.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      return i; 
     } 

     private Context mContext; 

    } 

    @Override 
    public View makeView() { 
     ImageView i = new ImageView(this); 
     i.setBackgroundColor(0xFF000000); 
     i.setScaleType(ImageView.ScaleType.FIT_CENTER); 
     i.setLayoutParams(new ImageSwitcher.LayoutParams(
       LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
     return i; 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View v, int position, 
      long id) { 
     if (flag) 
      iSwitcher.setImageResource(Array1[position]); 
     else 
      iSwitcher.setImageResource(Array2[position]); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 

    } 

} 
+0

感谢您的例子,但应用程序崩溃 – GrimJov

+0

W/dalvikvm(321):线程ID = 1:螺纹与未捕获的异常退出(组= 0x4001d800) – GrimJov

+0

我检查上述项目代码其工作正常他们没有错误。在我的模拟器中完全运行项目。 PLZ ..重新检查它。 –