안녕하세요 저는 9개의 이미지뷰와 9개의 버튼을 이용하여 그림 맞추는 게임을 만들고 있습니다
배운게 많이 없는 상황에서 만들어야 해서 정말 기초적인 지식으로 어찌저찌 만들었는데요..
가상머신을 띄우면 자꾸 멈추는 상황이 발생합니다ㅠㅠ
Logcat에서 빨간 줄이 많이 뜨는거 보면 잘못한게 많은거 같은데 못찾겠습니다
06-13 07:22:09.551 5906-5906/com.example.ekgus.finalexam01 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.ekgus.finalexam01, PID: 5906
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ekgus.finalexam01/com.example.ekgus.finalexam01.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object reference
at com.example.ekgus.finalexam01.MainActivity.initGame(MainActivity.java:52)
at com.example.ekgus.finalexam01.MainActivity.onCreate(MainActivity.java:47)
at android.app.Activity.performCreate(Activity.java:5990)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
이 부분이 모두 빨간줄로 되어 있습니다.
package com.example.ekgus.finalexam01;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
Random rnd = new Random();
int [] imgRes = { R.drawable.android_1, R.drawable.android_2, R.drawable.android_3, R.drawable.android_4, R.drawable.android_5, R.drawable.android_6, R.drawable.android_7, R.drawable.android_8, R.drawable.android_9 };
ImageView[] imgView = new ImageView[9];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
findViewById(R.id.fab).setOnClickListener(onButtonClick);
findViewById(R.id.button1).setOnClickListener(onButtonClick);
findViewById(R.id.button2).setOnClickListener(onButtonClick);
findViewById(R.id.button3).setOnClickListener(onButtonClick);
findViewById(R.id.button4).setOnClickListener(onButtonClick);
findViewById(R.id.button5).setOnClickListener(onButtonClick);
findViewById(R.id.button6).setOnClickListener(onButtonClick);
findViewById(R.id.button7).setOnClickListener(onButtonClick);
findViewById(R.id.button8).setOnClickListener(onButtonClick);
findViewById(R.id.button9).setOnClickListener(onButtonClick);
for (int i = 0; i < 9; i++) {
imgView[i] = (ImageView) findViewById(R.id.imageView1 + i );
}
initGame(); //게임 초기화
}
private void initGame() {
for (int i = 0; i < 9 ; i++) {
imgView[i].setImageResource(R.drawable.question);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 0, "다시 시작");
menu.add(0, 2, 1, "프로그램 종료");
menu.add(0, 3, 2, "About");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch ( item.getItemId() ) {
case 1:
initGame();
break;
case 2:
finishAffinity();
break;
case 3:
View v = findViewById(R.id.imageView1);
Snackbar.make(v, "이미지 맞추기", Snackbar.LENGTH_LONG).setAction("OK", new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
}).show();
}
return true;
}
Button.OnClickListener onButtonClick = new Button.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < 8; i++) {
if (v.getId() == R.id.button1 + i) {
int n = rnd.nextInt(7);
imgView[i].setImageResource(imgRes[n + 1]);
if (n == i) {
Toast.makeText(getApplicationContext(), "다음칸을 맞추세요.", Toast.LENGTH_SHORT).show();
}
}
}
if (v.getId() == R.id.button9) {
int n = rnd.nextInt(8);
imgView[8].setImageResource(imgRes[n + 1]);
if (n == 8) {
Toast.makeText(getApplicationContext(), "그림을 모두 맞추었습니다.", Toast.LENGTH_SHORT).show();
}
}
}
};
}
도와주시면 정말 감사하겠습니다..ㅠㅠㅠㅠ