Android代码和xml布局的结合有关问题

Android代码和xml布局的结合问题
public class TestChangeView extends Activity{
//private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;
DrawView dv;
private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
//LinearLayout layoutAll = new LinearLayout(this);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(80, 80);
param.leftMargin = 20;
dv = new DrawView(this);
layout.addView(dv, param);

//layoutAll.addView(layout, WC, WC);

RadioButton ra1 = (RadioButton) this.findViewById(R.id.radio1);
RadioButton ra2 = (RadioButton) this.findViewById(R.id.radio2);
RadioGroup rg = (RadioGroup) this.findViewById(R.id.myRadioGroup);
param = new LinearLayout.LayoutParams(80, 80);
rg.addView(ra1, param);
rg.addView(ra2, param);
layout.addView(rg, param);
//layoutAll.addView(findViewById(R.layout.radio_bg));

setContentView(layout);

rg.setOnCheckedChangeListener(
new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group,int checkedId) {
switch(checkedId){
case R.id.radio1:
dv.invalidate();
break;
case R.id.radio2:
dv.invalidate();
break;
}
}
}
);
}
}

//画图程序
public class DrawView extends View {

private Paint pa = new Paint();
private boolean yn = false;

public DrawView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
yn = !yn;
if(yn) 
pa.setColor(Color.GRAY);
else 
pa.setColor(Color.WHITE);

canvas.drawRect(10, 10, 100, 100, pa);
pa.setColor(Color.YELLOW);

if(yn) 
pa.setColor(Color.YELLOW);
else 
pa.setColor(Color.BLUE);

pa.setStrokeWidth(4);
pa.setStrokeCap(Paint.Cap.ROUND);

canvas.drawLine(10, 55, 100, 55, pa);
canvas.drawLine(55, 10, 55, 100, pa);

pa.setColor(Color.RED);
canvas.drawRect(50, 50, 60, 60, pa);
}
}
//////////////////////////RadioButton的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
<RadioGroup android:id="@+id/myRadioGroup"
android:layout_width="wrap_content"
  android:layout_height="wrap_content"
>
<RadioButton
android:id="@+id/radio1"
android:checked="false"
android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>

<RadioButton
android:id="@+id/radio2"
android:layout_width="wrap_content"
  android:layout_height="wrap_content"
/>
</RadioGroup>
</LinearLayout>

但是就是报错,我郁闷啊,希望高手帮忙解决,如果这种不行请各位高手支着,谢谢

------解决方案--------------------
报什么错啊,错误也一起贴上来三
------解决方案--------------------
RadioButton ra1 = (RadioButton) this.findViewById(R.id.radio1);
RadioButton ra2 = (RadioButton) this.findViewById(R.id.radio2);
RadioGroup rg = (RadioGroup) this.findViewById(R.id.myRadioGroup); 

这些语句只有在你setContentView()之后才可以执行,因此正确的步骤是: