调试疯狂Android 代码时候,发现总是addView程序奔溃;
<pre name="code" class="java">protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout main = (LinearLayout)findViewById(R.id.main);
setContentView(R.layout.activity_main);
//程序创建ImageView组件
final ImageView image = new ImageView(this);
if(main!=null){
main.addView(image);
}
//初始化显示第一张图片
image.setImageResource(R.drawable.c1);
image.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
image.setImageResource(images[++currentImg % images.length]);
}
});
}
然后发现是LinearLayout main = (LinearLayout)findViewById(R.id.main);main返回为空。
发现 findViewById 与 setContentView 有关。所查询的控件id必须包含于setContentView中设置的layout中。解决的方法就是将LinearLayout main = (LinearLayout)findViewById(R.id.main);扔在setContentView后面即可。