我只需要一些快速帮助。我正在使用android eclipse制作一个Android应用程序,当我试图找到图像视图模拟器崩溃,如果我评论它工作正常。
有人可以告诉我哪里出错了吗
package com.example.diceandmusic;
import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
public class MainActivity extends Activity {
Random nextDiceFace = new Random();
//ImageView diceFaceImageView = (ImageView)findViewById(R.id.diceFaceImage);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void rollDiceClick()
{
switch(nextDiceFace.nextInt(6)+1)
{
case 1:
//diceFaceImageView.setImageResource(R.drawable.one);
break;
case 2:
//diceFaceImageView.setImageResource(R.drawable.two);
break;
case 3:
//diceFaceImageView.setImageResource(R.drawable.three);
break;
case 4:
//diceFaceImageView.setImageResource(R.drawable.four);
break;
case 5:
//diceFaceImageView.setImageResource(R.drawable.five);
break;
case 6:
//diceFaceImageView.setImageResource(R.drawable.six);
break;
}
}
}
答案 0 :(得分:2)
由于您的diceFaceImageView
null ,因为Activity无法从布局xml文件绑定ImageView
到diceFaceImageView
,
就这一行,
diceFaceImageView = (ImageView)findViewById(R.id.diceFaceImage);
在setContentView(R.layout.activity_main);
in onCreate()
之后
像,
Random nextDiceFace = new Random();
ImageView diceFaceImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
diceFaceImageView = (ImageView)findViewById(R.id.diceFaceImage);
}
答案 1 :(得分:1)
您必须先致电
setContentView(R.layout.activity_main);
在实例化之前
ImageView diceFaceImageView = (ImageView)findViewById(R.id.diceFaceImage);
正确的做法是将Imageview声明为类变量,并在设置ContentView后实例化它
Random nextDiceFace = new Random();
ImageView diceFaceImageView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
diceFaceImageView = (ImageView)findViewById(R.id.diceFaceImage);
}