图像视图导致崩溃

时间:2015-02-18 15:47:21

标签: android

我只需要一些快速帮助。我正在使用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;

        }
    }
}

2 个答案:

答案 0 :(得分:2)

由于您的diceFaceImageView null ,因为Activity无法从布局xml文件绑定ImageViewdiceFaceImageView

就这一行,

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);
}