package com.passion;import java.util.ArrayList;
import java.util.Random;import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.View;
import android.widget.AbsoluteLayout;
import android.widget.TextView;public class NewActivity extends Activity {  
    private MyCount mc;  
    private TextView tv; 
    private NewView view;
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        // TODO Auto-generated method stub   
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main); 
        Log.i("line 29","1");
        view = new NewView(null);
        Log.i("line 31","2");
        //设置背景
       Resources res = getResources();
       Drawable drawable = res.getDrawable(R.drawable.bac);
       this.getWindow().setBackgroundDrawable(drawable);
        //设置字体
Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/LithosPro-Bold.ttf");
        tv = (TextView)findViewById(R.id.show);
        tv.setTypeface(typeface);
        tv.setTextColor(Color.BLACK);
        //倒计时5s,每次间隔1s
        mc = new MyCount(5000, 1000);  
        mc.start();  
        
    }
  
    /*定义一个倒计时的内部类*/  
    class MyCount extends CountDownTimer { 
    
        public MyCount(long millisInFuture, long countDownInterval) {     
            super(millisInFuture, countDownInterval);     
        }  
        
        //倒计时结束之后做的事
        @Override     
        public void onFinish() {  
            tv.setVisibility(View.INVISIBLE);
            setContentView(view);
        }
        
        //倒计时的时候
        @Override     
        public void onTick(long millisUntilFinished) {     
            tv.setText("请等待5秒(" + millisUntilFinished / 1000 + ")...");
               
        }    
    } 
    
    
    
}/*定义一个显示数字的类*/
class NewView extends AbsoluteLayout /*implements OnClickListener*/{
private int count = 5;
private TextView[] text = new TextView[count];
private int[] locationx = null;
private int[] locationy = null;
private int[] numbers = null;
private DisplayMetrics dm;
private int width;
private int height;

    
public NewView(Context context) {
super(context);
// TODO Auto-generated constructor stub
//获取屏幕的尺寸
dm = getResources().getDisplayMetrics();
     width = dm.widthPixels;
     height = dm.heightPixels;
//设置字体
Typeface typeface = Typeface.createFromAsset(context.getAssets(), "fonts/LithosPro-Bold.ttf");

numbers = randRange(count,10);
locationx = randRange(count,width-40);
locationy = randRange(count,height-40); for(int i =0;i<count;i++){
text[i] = new TextView(context);
addView(text[i],new AbsoluteLayout.LayoutParams(100,100, locationx[i], locationy[i]));
text[i].setText(numbers[i]+"");
text[i].setTextSize(40);
text[i].setTypeface(typeface);
text[i].setTextColor(Color.BLACK);
text[i].setId(numbers[i]);

}

}

//获得随机数组,num是产生随机数的个数,max是取值范围
public int[] randRange(int num ,int max) {
      ArrayList<Integer> list = new ArrayList<Integer>();
      Random rand = new Random();
      while(true){
            int rm = rand.nextInt(max);
            if(!list.contains(rm)){
            list.add(rm);
            if(list.size()>=num)break;
       }
   }
     int result[] = new int[num];
     for(int i = 0;i<list.size();i++){
     result[i] = list.get(i);
   }
   return result;
 }
    

}运行的时候报错了:01-25 04:47:01.133: E/AndroidRuntime(472): Caused by: java.lang.NullPointerException
用log检查的时候只能运行到Log.i("line 29","1");所以我怀疑是自定义的view出了问题。前面countdowntimer的时候是用了在xml里面定义的main.xml,后面倒计时完了我想更改屏幕上的图片,用我自己定义的一个view。
求助各位大神,这个问题该怎么解决?顺祝大家新年快乐!!!!