package com.misoo.ex01;import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;public class Ex01 extends Activity
{
private final int WC = LinearLayout.LayoutParams.WRAP_CONTENT;
private LinearLayout layout;
private int mColor = Color.YELLOW;
private LinearLayout.LayoutParams lParams;
static final int RG_REQUEST = 0;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
     super.onCreate(savedInstanceState);
     layout = new LinearLayout(this);
     layout.setOrientation(LinearLayout.VERTICAL);
     lParams = new LinearLayout.LayoutParams(230, 140);
     DrawView drawView= new DrawView(this);
     layout.addView(drawView, lParams);
    
     Button button = new Button(this);
     button.setText("Change Color");
     button.setOnClickListener(new OnClickListener()
{

@Override
public void onClick(View arg0)
{
Intent intent = new Intent(Ex01.this, RgActivity.class);
startActivityForResult(intent, RG_REQUEST);
}
});
    
     lParams = new LinearLayout.LayoutParams(WC, WC);
     layout.addView(button, lParams);
    
     setContentView(layout);
    }
   
    public int getColor()
    {
     return mColor;
    }
    
    @Override
    protected void onActivityResult(int requestCode, 
     int resultCode, Intent data)
    {
     if (requestCode == RG_REQUEST)
     {
     if (resultCode == RESULT_CANCELED)
     {
     setTitle("Canceled...");
     }
     else if (resultCode == RESULT_OK)
     {
     String dataString = (String) data.getCharSequenceExtra("DataKey");
     setTitle(dataString);
     if (dataString.contains("Y"))
     {
     mColor = Color.YELLOW;
     }
     else
     {
    mColor = Color.BLUE;
}
     }
     }
    }
}
package com.misoo.ex01;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;public class RgActivity extends Activity implements OnCheckedChangeListener
{
    private final int WC = RadioGroup.LayoutParams.WRAP_CONTENT;
    private RadioGroup radioGroup;
    RadioGroup.LayoutParams rParams;
    
    @Override
    public void onCreate(Bundle bundle)
    {
     super.onCreate(bundle);
     radioGroup = new RadioGroup(this);
     rParams = new RadioGroup.LayoutParams(WC, WC);
     radioGroup.setOrientation(RadioGroup.VERTICAL);
     radioGroup.setLayoutParams(rParams);
     radioGroup.setOnCheckedChangeListener(this);
    
     RadioButton radioButton = new RadioButton(this);
     radioButton.setText("Yellow");
     radioButton.setId(1001);
     rParams = new RadioGroup.LayoutParams(WC, WC);
     radioGroup.addView(radioButton, rParams);
    
     RadioButton radioButton1 = new RadioButton(this);
     radioButton1.setText("Blue");
     radioButton1.setId(1002);
     rParams = new RadioGroup.LayoutParams(WC, WC);
     radioGroup.addView(radioButton1, rParams);
    
     setContentView(radioGroup);
    }
    
    public void onCheckedChanged(RadioGroup arg0, int arg1)
    {
     String cc;
     if (arg0.getCheckedRadioButtonId() == 1001)
     {
     cc = "Y";
     }
     else 
     {
     cc = "B";
     }
     Bundle bundle = new Bundle();
     bundle.putString("DataKey", cc);
     Intent intent = new Intent();
     intent.putExtras(bundle);
     setResult(RESULT_OK, intent);
     finish();
    }
}

package com.misoo.ex01;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;public class DrawView extends View
{
    private Paint paint;
    private Context context;
    public DrawView (Context context)
{
   super(context);
   this.context = context;
   paint = new Paint();
}
    
    @Override 
    protected void onDraw(Canvas canvas)
    {
     Ex01 ex01 = (Ex01) context;
     paint.setColor(ex01.getColor());
     canvas.drawRect(10, 10, 100, 100, paint);
     paint.setColor(Color.GREEN);
     paint.setStrokeWidth(4);
     paint.setStrokeCap(Paint.Cap.ROUND);
     canvas.drawLine(10, 55, 100, 55, paint);
     canvas.drawLine(55, 10, 55, 100, paint);
     paint.setColor(Color.RED);
     canvas.drawRect(50, 50 ,60, 60, paint);
    }
}按照一本教材写的代码。运行后只出现如下界面,点changecolor出错。 Console没有报具体错误

解决方案 »

  1.   

    什么叫出错?  抛Exception  Crash?
    有问题记得看logcat  用Eclipse来Debug
    贴一堆代码上来  我还真的没耐心看
      

  2.   

    打开android sdk开发文档,发现还需要一个步骤,需要在androidmanifest.xml中  将rgActivity作为一个application的节点添加上去。       在此写下,为看高焕堂《应用框架原理与程序设计36技巧》一书的朋友提个醒。