我是Android的初学者,目前,我正在研究简单的应用程序。我有7张图片,我想在用户触摸屏幕时逐个更改。这是我的代码,我的应用程序在屏幕上的第二次触摸时崩溃。如果有人可以提供帮助,我会感激不尽。
public class Game extends Activity {
public TextView result;
public ImageView pirveli, meore, mesame, meotxe, mexute, meeqvse, meshvide;
int counter=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
result = (TextView) findViewById(R.id.result);
result.setText("Number of steps made: " + counter);
pirveli = (ImageView) findViewById(R.drawable.pirveli);
meore = (ImageView) findViewById(R.drawable.meore);
mesame = (ImageView) findViewById(R.drawable.mesame);
meotxe = (ImageView) findViewById(R.drawable.meotxe);
mexute = (ImageView) findViewById(R.drawable.mexute);
meeqvse = (ImageView) findViewById(R.drawable.meeqvse);
meshvide= (ImageView) findViewById(R.drawable.meshvide);
}
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==0){
result.setText("Number of steps made: " + counter);
counter++;
pirveli.setImageResource(R.drawable.meore);
}
return false;
}
还有一个问题:当我第一次触摸屏幕时,int counter没有增加。我该如何解决?
答案 0 :(得分:0)
首先,您应该使用MotionEvent常量,因为它们可能会在将来的API版本中更改,也需要在处理触摸事件后返回true。
我还建议您添加空检查以获得良好的衡量标准。
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN){
if (result != null);
result.setText("Number of steps made: " + counter);
counter++;
if (pirveli != null)
pirveli.setImageResource(R.drawable.meore);
return true;
}
return false;
}
如果这些都不是你的问题,那么堆栈跟踪会有很大的帮助。
答案 1 :(得分:0)
假设R.drawable.meore
,R.drawable.mesame
等是drawable
文件夹中的可绘制资源,这应该可以。
public class Game extends Activity {
TextView result;
int[] drawableIds = {R.drawable.meore, R.drawablemeSame, R.drawable.meotxe, R.drawable.mexute, R.drawable.meeqvse, R.drawable.meshvide};
int counter=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game);
result = (TextView) findViewById(R.id.result);
result.setText("Number of steps made: " + counter);
pirveli = (ImageView) findViewById(R.drawable.pirveli);
pirveli.setOnTouchListener(this);
}
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
result.setText("Number of steps made: " + counter);
counter++;
pirveli.setImageResource( drawableIds[ drawableIds.length % counter ] );
}
return false;
}
此处,它将循环浏览资源ID,并在每次用户触摸时更改ImageView
。