我是一名新手程序员,我正在尝试使用 Eclipse 学习 Android 编码。这是我第一次使用 StackOverflow。
仅出于教程目的,我想做一个简单的动物百科全书。
所以在我的 Home 类中,有一些按钮:“Dog”、“Cat”、“Bird”等。当我单击按钮时,它会将我带到相同的布局,但当然会有不同的内容。
所以我创建了一个名为 AnimalData 的类,它包含
ArrayList<Integer>
要存储R.drawable.xxx
和ArrayList<String>
存储我将放在图片下方的文本(如“Bulldog”或“Husky”)然后我创建了一个名为 ChangeContent 的类来将所有这些可绘制对象和文本设置为 XML
但是每当我单击该按钮时,都会导致意外停止错误
以下是缩短的 Home 课程,“崩溃制造者”不在这里。我已经使用检查了每行的整个代码行Thread.sleep(2000)
,所以如果我的应用程序在 2 秒之前崩溃,则错误出现在 sleep() 代码之前,反之亦然。
public class Home extends Activity implements OnClickListener{
Button dog, cat, bird;
AnimalData ad;
ChangeContent cc;
private ArrayList<Integer> drawable;
private ArrayList<String> title;
public Home(){
ad = new AnimalData();
cc = new ChangeContent(ad);
drawable = new ArrayList<Integer>();
title = new ArrayList<String>()
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
//set the findViewById for all the buttons
//set onClickListener() to all the buttons
}
public void onClick(View v) {
switch (v.getId()){
case R.id.bDog:
drawable.add(R.drawable.xxx);
drawable.add(R.drawable.yyy);
title.add("Bulldog");
title.add("Husky");
break;
case R.id.Cat:
//same
break;
case R.id.bBird:
//same
break;
}
ad.setDrawable(drawable);
ad.setTitle(title);
Intent i = new Intent("animal.ChangeContent"); //from Manifest
startActivity(i);
}
}
AnimalData 只是一个典型的 getter setter,所以我将跳过它的代码
错误就在 ChangeContent 启动之后,因为即使我将 sleep() 放在构造函数的第一行,它也没有任何效果。
public class ChangeContent extends Activity {
TextView title1, title2;
ImageView pic1, pic2;
private ArrayList<Integer> drawable;
private ArrayList<String> title;
public ChangeContent(AnimalData data){
drawable = new ArrayList<Integer>();
title = new ArrayList<String>();
drawable = data.getDrawable();
title = data.getTitle();
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.animal_info);
//findViewById for the TextView and ImageView
//setText() for TextView and setImageResource() for ImageView
}
}
对不起,这个问题很长,我尽量让它尽可能短,你们能帮我找出错误吗?之前谢谢