求大神们看看哪里出错了

Android 码拜 9年前 (2015-05-10) 665次浏览 0个评论

ImageView img1;
Button bt1, bt2;
int j=0;
Drawable d[] = { this.getResources().getDrawable(R.drawable.horse1),
this.getResources().getDrawable(R.drawable.horse2),
this.getResources().getDrawable(R.drawable.horse3) };

Handler handler=new Handler(){

@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
j=msg.arg1;
for(int i=0;i<3;i++){
if(i!=j){
img1.setBackgroundDrawable(d[j]);
}
handler.post(run);
}
}

};
Runnable run=new Runnable() {

@Override
public void run() {
Message msg=new Message();
msg.arg1=j;
handler.sendMessage(msg);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(j>2)
{j=0;}
else{
j++;
}
}
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img1=(ImageView) this.findViewById(R.id.imageView1);
bt1=(Button) this.findViewById(R.id.button1);
bt2=(Button) this.findViewById(R.id.button2);
bt1.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
handler.post(run);

}
});
bt2.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
handler.removeCallbacks(run);

}
});
}

Drawable那里写错了
oncreate未开始前,不能用this,
this.getResources()会为null的
引用 1 楼 inquisitive_plus 的回复:

Drawable那里写错了
oncreate未开始前,不能用this,
this.getResources()会为null的

大神该怎么改进呢

60分
引用 2 楼 u010412422 的回复:

大神该怎么改进呢

放oncreate里就行了,
存单对象我习惯用arraylist
ArrayList<Drawable> d;//声明

d=new ArrayList<Drawable>();//初始化
d.add(getResources().getDrawable(R.drawable.ic_launcher));//赋值
d.add(getResources().getDrawable(R.drawable.ic_launcher));
d.add(getResources().getDrawable(R.drawable.ic_launcher));

其他关于arraylist的api你可以百度得到
这样的结构还利于方法的封装,我觉得比用纯对象数组好


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求大神们看看哪里出错了
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!