2012-05-24 36 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 ..重新檢查它。 –