

下記のプログラムをスマホ上で実行すると起動と同時に終了してしまいます。コーディング時にはエラーが出ないのでどこに問題があるのか分かりません。原因を教えてくださる方いらっしゃいましたらよろしくお願いします。  
※MonsterはString型とImageView型のインスタンスフィールドを持つクラスです。

[code]

    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        // イメージ取得
        ImageView fImage = (ImageView)findViewById(R.id.fireI);
        ImageView lImage = (ImageView)findViewById(R.id.leafI);
        ImageView wImage = (ImageView)findViewById(R.id.waterI);
        // コンストラクタ設定
        Monster f = new Monster("ヒトカゲ",fImage);
        Monster l = new Monster("フシギダネ",lImage);
        Monster w = new Monster("ゼニガメ",wImage);
    }
    
[/code]


CC BY-SA 3.0
2017-05-07T23:34:50.443
34528
2017-05-26T15:53:07.587
2017-05-26T13:49:09.010
3054
23003
question
android java android-studio
オブジェクト指向で作成したアプリが起動時にエラーになります。


`findViewById()` はインスタンス変数の宣言時に行ってはいけません。  
`onCreate`の中で実行するようにプログラムを修正すると良いでしょう。

[code]

    public class MainActivity extends AppCompatActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // イメージ取得
            ImageView fImage = (ImageView)findViewById(R.id.fireI);
            ImageView lImage = (ImageView)findViewById(R.id.leafI);
            ImageView wImage = (ImageView)findViewById(R.id.waterI);
    
            // コンストラクタ設定
            Monster f = new Monster("ヒトカゲ",fImage);
            Monster l = new Monster("フシギダネ",lImage);
            Monster w = new Monster("ゼニガメ",wImage);
       }
    }
    
[/code]


CC BY-SA 3.0
2017-05-26T15:53:07.587
35046
2017-05-26T15:53:07.587
7655
34528
answer